summaryrefslogtreecommitdiff
path: root/libcli/auth/ntlmssp_server.c
diff options
context:
space:
mode:
authorJeremy Allison <jra@samba.org>2011-03-28 13:26:27 -0700
committerJeremy Allison <jra@samba.org>2011-03-28 23:12:07 +0200
commit52602e4f5ad0f7c3cdb4a50dfe32d0b8ad49b6e4 (patch)
tree69911fe6eca738368d497107032f3a3b084058b6 /libcli/auth/ntlmssp_server.c
parentfbe19ba39843d0c70758fc8d775b085a67224a94 (diff)
downloadsamba-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.c13
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) {