s3-ntlmssp: use NEGOTIATE_MESSAGE in ntlmssp_client_initial(). ntlmssp
authorGünther Deschner <gd@samba.org>
Thu, 13 Aug 2009 06:58:37 +0000 (08:58 +0200)
committerSimo Sorce <idra@samba.org>
Tue, 20 Jul 2010 14:24:36 +0000 (10:24 -0400)
Guenther

Signed-off-by: Simo Sorce <idra@samba.org>
source3/libsmb/ntlmssp.c

index a0dc39be3e6a9763f8ceea168fd1f42ba71a2fa3..a4802bdbad290e3e5db2ce53c76119002f00853a 100644 (file)
@@ -883,6 +883,9 @@ NTSTATUS ntlmssp_server_start(TALLOC_CTX *mem_ctx,
 static NTSTATUS ntlmssp_client_initial(struct ntlmssp_state *ntlmssp_state,
                                  DATA_BLOB reply, DATA_BLOB *next_request)
 {
+       NTSTATUS status;
+       struct NEGOTIATE_MESSAGE negotiate;
+
        if (ntlmssp_state->unicode) {
                ntlmssp_state->neg_flags |= NTLMSSP_NEGOTIATE_UNICODE;
        } else {
@@ -893,27 +896,19 @@ static NTSTATUS ntlmssp_client_initial(struct ntlmssp_state *ntlmssp_state,
                ntlmssp_state->neg_flags |= NTLMSSP_NEGOTIATE_NTLM2;
        }
 
-       /* generate the ntlmssp negotiate packet */
-       msrpc_gen(ntlmssp_state, next_request, "CddAA",
-                 "NTLMSSP",
-                 NTLMSSP_NEGOTIATE,
-                 ntlmssp_state->neg_flags,
-                 ntlmssp_state->client.netbios_domain,
-                 ntlmssp_state->client.netbios_name);
+       negotiate.NegotiateFlags        = ntlmssp_state->neg_flags;
+       negotiate.DomainName            = ntlmssp_state->client.netbios_domain;
+       negotiate.Workstation           = ntlmssp_state->client.netbios_name;
+
+       status = ntlmssp_push_NEGOTIATE_MESSAGE(next_request,
+                                               ntlmssp_state,
+                                               &negotiate);
+       if (!NT_STATUS_IS_OK(status)) {
+               return status;
+       }
 
        if (DEBUGLEVEL >= 10) {
-               struct NEGOTIATE_MESSAGE *negotiate = talloc(
-                       talloc_tos(), struct NEGOTIATE_MESSAGE);
-               if (negotiate != NULL) {
-                       NTSTATUS status;
-                       status = ntlmssp_pull_NEGOTIATE_MESSAGE(
-                               next_request, negotiate, negotiate);
-                       if (NT_STATUS_IS_OK(status)) {
-                               NDR_PRINT_DEBUG(NEGOTIATE_MESSAGE,
-                                               negotiate);
-                       }
-                       TALLOC_FREE(negotiate);
-               }
+               NDR_PRINT_DEBUG(NEGOTIATE_MESSAGE, &negotiate);
        }
 
        ntlmssp_state->expected_state = NTLMSSP_CHALLENGE;