1
0
mirror of https://github.com/samba-team/samba.git synced 2025-01-24 02:04:21 +03:00

ntlmssp: Add ntlmssp_blob_matches_magic()

This avoids having the same check in 3 different parts of the code

Andrew Bartlett

Autobuild-User: Andrew Bartlett <abartlet@samba.org>
Autobuild-Date: Wed Aug  3 12:45:04 CEST 2011 on sn-devel-104
This commit is contained in:
Andrew Bartlett 2011-08-03 09:33:29 +10:00
parent d811862b45
commit fec25c3a62
5 changed files with 15 additions and 3 deletions

View File

@ -132,3 +132,13 @@ void ntlmssp_handle_neg_flags(struct ntlmssp_state *ntlmssp_state,
ntlmssp_state->neg_flags |= NTLMSSP_REQUEST_TARGET;
}
}
/* Does this blob looks like it could be NTLMSSP? */
bool ntlmssp_blob_matches_magic(const DATA_BLOB *blob)
{
if (blob->length > 8 && memcmp("NTLMSSP\0", blob->data, 8) == 0) {
return true;
} else {
return false;
}
}

View File

@ -169,3 +169,5 @@ NTSTATUS ntlmssp_unwrap(struct ntlmssp_state *ntlmssp_stae,
const DATA_BLOB *in,
DATA_BLOB *out);
NTSTATUS ntlmssp_sign_init(struct ntlmssp_state *ntlmssp_state);
bool ntlmssp_blob_matches_magic(const DATA_BLOB *blob);

View File

@ -1140,7 +1140,7 @@ static void reply_sesssetup_and_X_spnego(struct smb_request *req)
* identical regardless. In particular, both rely only on the
* status code (not the contents of the packet) and do not
* wrap the result */
if (sconn->use_gensec_hook || (blob1.length > 7 && strncmp((char *)(blob1.data), "NTLMSSP", 7) == 0)) {
if (sconn->use_gensec_hook || ntlmssp_blob_matches_magic(&blob1)) {
DATA_BLOB chal;
if (!vuser->auth_ntlmssp_state) {

View File

@ -753,7 +753,7 @@ static NTSTATUS smbd_smb2_session_setup(struct smbd_smb2_request *smb2req,
* status code (not the contents of the packet) and do not
* wrap the result */
if (session->sconn->use_gensec_hook
|| (in_security_buffer.length > 7 && strncmp((char *)(in_security_buffer.data), "NTLMSSP", 7) == 0)) {
|| ntlmssp_blob_matches_magic(&in_security_buffer)) {
return smbd_smb2_raw_ntlmssp_auth(session,
smb2req,
in_security_mode,

View File

@ -63,7 +63,7 @@ static const struct ntlmssp_callbacks {
static NTSTATUS gensec_ntlmssp_magic(struct gensec_security *gensec_security,
const DATA_BLOB *first_packet)
{
if (first_packet->length > 8 && memcmp("NTLMSSP\0", first_packet->data, 8) == 0) {
if (ntlmssp_blob_matches_magic(first_packet)) {
return NT_STATUS_OK;
} else {
return NT_STATUS_INVALID_PARAMETER;