svn commit: samba r23366 - in branches/SAMBA_4_0_RELEASE/source: rpc_server/samr torture/rpc

abartlet at samba.org abartlet at samba.org
Wed Jun 6 12:52:48 GMT 2007


Author: abartlet
Date: 2007-06-06 12:52:48 +0000 (Wed, 06 Jun 2007)
New Revision: 23366

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

Log:
Merge from SAMBA_4_0:

Try to make Windows Vista join again.  On my new test environment, it
wants to check for an existing domain join account, and fails.  This
test shows that we need to return NT_STATUS_NONE_MAPPED when nothing
matches.  (not yet tested if this helps vista).


Modified:
   branches/SAMBA_4_0_RELEASE/source/rpc_server/samr/dcesrv_samr.c
   branches/SAMBA_4_0_RELEASE/source/torture/rpc/samr.c


Changeset:
Modified: branches/SAMBA_4_0_RELEASE/source/rpc_server/samr/dcesrv_samr.c
===================================================================
--- branches/SAMBA_4_0_RELEASE/source/rpc_server/samr/dcesrv_samr.c	2007-06-06 12:51:45 UTC (rev 23365)
+++ branches/SAMBA_4_0_RELEASE/source/rpc_server/samr/dcesrv_samr.c	2007-06-06 12:52:48 UTC (rev 23366)
@@ -1783,7 +1783,7 @@
 {
 	struct dcesrv_handle *h;
 	struct samr_domain_state *d_state;
-	int i;
+	int i, num_mapped;
 	NTSTATUS status = NT_STATUS_OK;
 	const char * const attrs[] = { "sAMAccountType", "objectSid", NULL };
 	int count;
@@ -1807,6 +1807,8 @@
 	r->out.rids.count = r->in.num_names;
 	r->out.types.count = r->in.num_names;
 
+	num_mapped = 0;
+
 	for (i=0;i<r->in.num_names;i++) {
 		struct ldb_message **res;
 		struct dom_sid *sid;
@@ -1844,9 +1846,12 @@
 
 		r->out.rids.ids[i] = sid->sub_auths[sid->num_auths-1];
 		r->out.types.ids[i] = rtype;
+		num_mapped++;
 	}
 	
-
+	if (num_mapped == 0) {
+		return NT_STATUS_NONE_MAPPED;
+	}
 	return status;
 }
 

Modified: branches/SAMBA_4_0_RELEASE/source/torture/rpc/samr.c
===================================================================
--- branches/SAMBA_4_0_RELEASE/source/torture/rpc/samr.c	2007-06-06 12:51:45 UTC (rev 23365)
+++ branches/SAMBA_4_0_RELEASE/source/torture/rpc/samr.c	2007-06-06 12:52:48 UTC (rev 23366)
@@ -922,17 +922,43 @@
 	status = dcerpc_samr_LookupNames(p, mem_ctx, &n);
 	if (!NT_STATUS_EQUAL(status, STATUS_SOME_UNMAPPED)) {
 		printf("LookupNames[2] failed - %s\n", nt_errstr(status));		
+		if (NT_STATUS_IS_OK(status)) {
+			return NT_STATUS_UNSUCCESSFUL;
+		}
 		return status;
 	}
 
-	init_lsa_String(&sname[1], "xxNONAMExx");
 	n.in.num_names = 0;
 	status = dcerpc_samr_LookupNames(p, mem_ctx, &n);
 	if (!NT_STATUS_IS_OK(status)) {
 		printf("LookupNames[0] failed - %s\n", nt_errstr(status));		
+		return status;
 	}
 
-	return status;
+	init_lsa_String(&sname[0], "xxNONAMExx");
+	n.in.num_names = 1;
+	status = dcerpc_samr_LookupNames(p, mem_ctx, &n);
+	if (!NT_STATUS_EQUAL(status, NT_STATUS_NONE_MAPPED)) {
+		printf("LookupNames[1 bad name] failed - %s\n", nt_errstr(status));		
+		if (NT_STATUS_IS_OK(status)) {
+			return NT_STATUS_UNSUCCESSFUL;
+		}
+		return status;
+	}
+
+	init_lsa_String(&sname[0], "xxNONAMExx");
+	init_lsa_String(&sname[1], "xxNONAME2xx");
+	n.in.num_names = 2;
+	status = dcerpc_samr_LookupNames(p, mem_ctx, &n);
+	if (!NT_STATUS_EQUAL(status, NT_STATUS_NONE_MAPPED)) {
+		printf("LookupNames[2 bad names] failed - %s\n", nt_errstr(status));		
+		if (NT_STATUS_IS_OK(status)) {
+			return NT_STATUS_UNSUCCESSFUL;
+		}
+		return status;
+	}
+
+	return NT_STATUS_OK;
 }
 
 static NTSTATUS test_OpenUser_byname(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, 



More information about the samba-cvs mailing list