svn commit: samba r18773 - in branches/SAMBA_3_0/source/smbd: .

vlendec at samba.org vlendec at samba.org
Thu Sep 21 05:29:07 GMT 2006


Author: vlendec
Date: 2006-09-21 05:29:07 +0000 (Thu, 21 Sep 2006)
New Revision: 18773

WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=18773

Log:
Change negprot_spnego to return a blob
Modified:
   branches/SAMBA_3_0/source/smbd/negprot.c


Changeset:
Modified: branches/SAMBA_3_0/source/smbd/negprot.c
===================================================================
--- branches/SAMBA_3_0/source/smbd/negprot.c	2006-09-21 05:19:22 UTC (rev 18772)
+++ branches/SAMBA_3_0/source/smbd/negprot.c	2006-09-21 05:29:07 UTC (rev 18773)
@@ -169,7 +169,7 @@
  Generate the spnego negprot reply blob. Return the number of bytes used.
 ****************************************************************************/
 
-static int negprot_spnego(char *p)
+static DATA_BLOB negprot_spnego(void)
 {
 	DATA_BLOB blob;
 	nstring dos_name;
@@ -180,7 +180,6 @@
 				   OID_NTLMSSP,
 				   NULL};
 	const char *OIDs_plain[] = {OID_NTLMSSP, NULL};
-	int len;
 
 	global_spnego_negotiated = True;
 
@@ -222,11 +221,7 @@
 		SAFE_FREE(host_princ_s);
 	}
 
-	memcpy(p, blob.data, blob.length);
-	len = blob.length;
-	data_blob_free(&blob);
-
-	return len;
+	return blob;
 }
 
 /****************************************************************************
@@ -332,10 +327,17 @@
 				 STR_UNICODE|STR_TERMINATE|STR_NOALIGN);
 		DEBUG(3,("not using SPNEGO\n"));
 	} else {
-		int len = negprot_spnego(p);
-		
+		DATA_BLOB spnego_blob = negprot_spnego();
+
+		if (spnego_blob.data == NULL) {
+			return ERROR_NT(NT_STATUS_NO_MEMORY);
+		}
+
+		memcpy(p, spnego_blob.data, spnego_blob.length);
+		p += spnego_blob.length;
+		data_blob_free(&spnego_blob);
+
 		SCVAL(outbuf,smb_vwv16+1, 0);
-		p += len;
 		DEBUG(3,("using SPNEGO\n"));
 	}
 	



More information about the samba-cvs mailing list