diff options
Diffstat (limited to 'source3')
-rw-r--r-- | source3/libsmb/ntlmssp.c | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/source3/libsmb/ntlmssp.c b/source3/libsmb/ntlmssp.c index 7a006a373f..e0bcccaee6 100644 --- a/source3/libsmb/ntlmssp.c +++ b/source3/libsmb/ntlmssp.c @@ -377,6 +377,8 @@ static NTSTATUS ntlmssp_client_initial(struct ntlmssp_state *ntlmssp_state, TALLOC_CTX *out_mem_ctx, /* Unused at this time */ DATA_BLOB reply, DATA_BLOB *next_request) { + NTSTATUS status; + if (ntlmssp_state->unicode) { ntlmssp_state->neg_flags |= NTLMSSP_NEGOTIATE_UNICODE; } else { @@ -388,12 +390,17 @@ static NTSTATUS ntlmssp_client_initial(struct ntlmssp_state *ntlmssp_state, } /* generate the ntlmssp negotiate packet */ - msrpc_gen(ntlmssp_state, next_request, "CddAA", + status = msrpc_gen(ntlmssp_state, next_request, "CddAA", "NTLMSSP", NTLMSSP_NEGOTIATE, ntlmssp_state->neg_flags, ntlmssp_state->client.netbios_domain, ntlmssp_state->client.netbios_name); + if (!NT_STATUS_IS_OK(status)) { + DEBUG(0, ("ntlmssp_client_initial: failed to generate " + "ntlmssp negotiate packet\n")); + return status; + } if (DEBUGLEVEL >= 10) { struct NEGOTIATE_MESSAGE *negotiate = talloc( @@ -683,7 +690,7 @@ noccache: } /* this generates the actual auth packet */ - if (!msrpc_gen(ntlmssp_state, next_request, auth_gen_string, + nt_status = msrpc_gen(ntlmssp_state, next_request, auth_gen_string, "NTLMSSP", NTLMSSP_AUTH, lm_response.data, lm_response.length, @@ -692,8 +699,9 @@ noccache: ntlmssp_state->user, ntlmssp_state->client.netbios_name, encrypted_session_key.data, encrypted_session_key.length, - ntlmssp_state->neg_flags)) { + ntlmssp_state->neg_flags); + if (!NT_STATUS_IS_OK(nt_status)) { return NT_STATUS_NO_MEMORY; } |