diff options
author | Jeremy Allison <jra@samba.org> | 2011-03-28 13:26:27 -0700 |
---|---|---|
committer | Jeremy Allison <jra@samba.org> | 2011-03-28 23:12:07 +0200 |
commit | 52602e4f5ad0f7c3cdb4a50dfe32d0b8ad49b6e4 (patch) | |
tree | 69911fe6eca738368d497107032f3a3b084058b6 /libcli/auth/ntlmssp_server.c | |
parent | fbe19ba39843d0c70758fc8d775b085a67224a94 (diff) | |
download | samba-52602e4f5ad0f7c3cdb4a50dfe32d0b8ad49b6e4.tar.gz samba-52602e4f5ad0f7c3cdb4a50dfe32d0b8ad49b6e4.tar.bz2 samba-52602e4f5ad0f7c3cdb4a50dfe32d0b8ad49b6e4.zip |
Fix inspired by work done by David Disseldorp for bug #8040 - smbclient segfaults when a Cyrillic netbios name or workgroup is configured.
Change msrpc_gen to return NTSTATUS and ensure everywhere this is
used it is correctly checked to return that status.
Jeremy.
Diffstat (limited to 'libcli/auth/ntlmssp_server.c')
-rw-r--r-- | libcli/auth/ntlmssp_server.c | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/libcli/auth/ntlmssp_server.c b/libcli/auth/ntlmssp_server.c index 264e8bc908..802ac402b4 100644 --- a/libcli/auth/ntlmssp_server.c +++ b/libcli/auth/ntlmssp_server.c @@ -144,12 +144,15 @@ NTSTATUS ntlmssp_server_negotiate(struct ntlmssp_state *ntlmssp_state, /* This creates the 'blob' of names that appears at the end of the packet */ if (chal_flags & NTLMSSP_NEGOTIATE_TARGET_INFO) { - msrpc_gen(ntlmssp_state, &struct_blob, "aaaaa", + status = msrpc_gen(ntlmssp_state, &struct_blob, "aaaaa", MsvAvNbDomainName, target_name, MsvAvNbComputerName, ntlmssp_state->server.netbios_name, MsvAvDnsDomainName, ntlmssp_state->server.dns_domain, MsvAvDnsComputerName, ntlmssp_state->server.dns_name, MsvAvEOL, ""); + if (!NT_STATUS_IS_OK(status)) { + return status; + } } else { struct_blob = data_blob_null; } @@ -187,7 +190,7 @@ NTSTATUS ntlmssp_server_negotiate(struct ntlmssp_state *ntlmssp_state, gen_string = "CdAdbddBb"; } - msrpc_gen(out_mem_ctx, reply, gen_string, + status = msrpc_gen(out_mem_ctx, reply, gen_string, "NTLMSSP", NTLMSSP_CHALLENGE, target_name, @@ -197,6 +200,12 @@ NTSTATUS ntlmssp_server_negotiate(struct ntlmssp_state *ntlmssp_state, struct_blob.data, struct_blob.length, version_blob.data, version_blob.length); + if (!NT_STATUS_IS_OK(status)) { + data_blob_free(&version_blob); + data_blob_free(&struct_blob); + return status; + } + data_blob_free(&version_blob); if (DEBUGLEVEL >= 10) { |