[SCM] Samba Shared Repository - branch master updated

Jeremy Allison jra at samba.org
Tue May 18 17:42:07 MDT 2010


The branch, master has been updated
       via  6a90307... Fix our NTLMSSP implementation against the Microsoft torture tester.
      from  829c876... Change data_blob() to be based on top of data_blob_talloc(), instead of the reverse (as it is now).

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit 6a903078cb133a1f46c9d6f24f50d863e31b743c
Author: Jeremy Allison <jra at samba.org>
Date:   Tue May 18 16:32:13 2010 -0700

    Fix our NTLMSSP implementation against the Microsoft torture tester.
    
    We need to return a version blob if we negotiate version info.
    
    Jeremy.

-----------------------------------------------------------------------

Summary of changes:
 source3/libsmb/ntlmssp.c |   50 ++++++++++++++++++++++++++++++++++------------
 1 files changed, 37 insertions(+), 13 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source3/libsmb/ntlmssp.c b/source3/libsmb/ntlmssp.c
index e4155fb..1f6720c 100644
--- a/source3/libsmb/ntlmssp.c
+++ b/source3/libsmb/ntlmssp.c
@@ -520,22 +520,46 @@ static NTSTATUS ntlmssp_server_negotiate(struct ntlmssp_state *ntlmssp_state,
 	}
 
 	{
-		/* Marshel the packet in the right format, be it unicode or ASCII */
+		/* Marshal the packet in the right format, be it unicode or ASCII */
 		const char *gen_string;
-		if (ntlmssp_state->unicode) {
-			gen_string = "CdUdbddB";
+		/* "What Windows returns" as a version number. */
+		const char vers[] = { 0x6, 0x1, 0xb0, 0x1d, 0, 0, 0, 0xf};
+
+		if (chal_flags & NTLMSSP_NEGOTIATE_VERSION) {
+			DATA_BLOB version_blob = data_blob_talloc(ntlmssp_state, vers, 8);
+
+			if (ntlmssp_state->unicode) {
+				gen_string = "CdUdbddBb";
+			} else {
+				gen_string = "CdAdbddBb";
+			}
+
+			msrpc_gen(ntlmssp_state, reply, gen_string,
+				"NTLMSSP",
+				NTLMSSP_CHALLENGE,
+				target_name,
+				chal_flags,
+				cryptkey, 8,
+				0, 0,
+				struct_blob.data, struct_blob.length,
+				version_blob.data, version_blob.length);
+			data_blob_free(&version_blob);
 		} else {
-			gen_string = "CdAdbddB";
-		}
+			if (ntlmssp_state->unicode) {
+				gen_string = "CdUdbddB";
+			} else {
+				gen_string = "CdAdbddB";
+			}
 
-		msrpc_gen(ntlmssp_state, reply, gen_string,
-			  "NTLMSSP",
-			  NTLMSSP_CHALLENGE,
-			  target_name,
-			  chal_flags,
-			  cryptkey, 8,
-			  0, 0,
-			  struct_blob.data, struct_blob.length);
+			msrpc_gen(ntlmssp_state, reply, gen_string,
+				"NTLMSSP",
+				NTLMSSP_CHALLENGE,
+				target_name,
+				chal_flags,
+				cryptkey, 8,
+				0, 0,
+				struct_blob.data, struct_blob.length);
+		}
 
 		if (DEBUGLEVEL >= 10) {
 			if (NT_STATUS_IS_OK(ntlmssp_pull_CHALLENGE_MESSAGE(reply,


-- 
Samba Shared Repository


More information about the samba-cvs mailing list