r11080: Narrowing down on the #1828 PPC bug. The PPC client sends an
authorJeremy Allison <jra@samba.org>
Sat, 15 Oct 2005 00:48:47 +0000 (00:48 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 18:44:45 +0000 (13:44 -0500)
initial NTLMSSP negotiate blob of only 16 bytes - no strings
added ! (So don't try parsing them).
Jeremy.
(This used to be commit 42d93a317ab424a0720620b83c285b5118bcc06f)

source4/auth/ntlmssp/ntlmssp_server.c

index 9a1e11aff6166eafc4c1223ff7865ef2e322d15d..374bb23b6a8d19f068130faa4681355ffdca7820 100644 (file)
@@ -186,28 +186,16 @@ NTSTATUS ntlmssp_server_negotiate(struct gensec_security *gensec_security,
 #endif
 
        if (in.length) {
-               BOOL parse_ok = msrpc_parse(out_mem_ctx,
-                                &in, "CddAA",
-                                "NTLMSSP",
-                                &ntlmssp_command,
-                                &neg_flags,
-                                &cliname,
-                                &domname);
-               if (!parse_ok) {
-                       parse_ok = msrpc_parse(out_mem_ctx,
-                                        &in, "CddUU",
-                                        "NTLMSSP",
-                                        &ntlmssp_command,
-                                        &neg_flags,
-                                        &cliname,
-                                        &domname);
-               }
-               if (!parse_ok) {
-                       DEBUG(1, ("ntlmssp_server_negotiate: failed to parse NTLMSSP:\n"));
+               if ((in.length < 16) || !msrpc_parse(out_mem_ctx, &in, "Cdd",
+                                                        "NTLMSSP",
+                                                        &ntlmssp_command,
+                                                        &neg_flags)) {
+                       DEBUG(1, ("ntlmssp_server_negotiate: failed to parse "
+                               "NTLMSSP Negotiate of length %u:\n",
+                               (unsigned int)in.length ));
                        dump_data(2, in.data, in.length);
                        return NT_STATUS_INVALID_PARAMETER;
                }
-               
                debug_ntlmssp_flags(neg_flags);
        }