svn commit: samba r5469 - in branches/SAMBA_3_0/source: rpc_client rpc_server rpcclient

vlendec at samba.org vlendec at samba.org
Sun Feb 20 14:26:58 GMT 2005


Author: vlendec
Date: 2005-02-20 14:26:58 +0000 (Sun, 20 Feb 2005)
New Revision: 5469

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

Log:
Fix error codes of samr_lookup_rids: There's also STATUS_SOME_UNMAPPED.

Thanks,

Volker
Modified:
   branches/SAMBA_3_0/source/rpc_client/cli_samr.c
   branches/SAMBA_3_0/source/rpc_server/srv_samr_nt.c
   branches/SAMBA_3_0/source/rpcclient/cmd_samr.c


Changeset:
Modified: branches/SAMBA_3_0/source/rpc_client/cli_samr.c
===================================================================
--- branches/SAMBA_3_0/source/rpc_client/cli_samr.c	2005-02-20 13:47:52 UTC (rev 5468)
+++ branches/SAMBA_3_0/source/rpc_client/cli_samr.c	2005-02-20 14:26:58 UTC (rev 5469)
@@ -1649,9 +1649,11 @@
 
 	/* Return output parameters */
 
-	if (!NT_STATUS_IS_OK(result = r.status)) {
+	result = r.status;
+
+	if (!NT_STATUS_IS_OK(result) &&
+	    !NT_STATUS_EQUAL(result, STATUS_SOME_UNMAPPED))
 		goto done;
-	}
 
 	if (r.num_names1 == 0) {
 		*num_names = 0;

Modified: branches/SAMBA_3_0/source/rpc_server/srv_samr_nt.c
===================================================================
--- branches/SAMBA_3_0/source/rpc_server/srv_samr_nt.c	2005-02-20 13:47:52 UTC (rev 5468)
+++ branches/SAMBA_3_0/source/rpc_server/srv_samr_nt.c	2005-02-20 14:26:58 UTC (rev 5469)
@@ -1510,7 +1510,9 @@
 	int num_rids = q_u->num_rids1;
 	int i;
 	uint32 acc_granted;
-
+	BOOL have_mapped = False;
+	BOOL have_unmapped = False;
+	
 	r_u->status = NT_STATUS_OK;
 
 	DEBUG(5,("_samr_lookup_rids: %d\n", __LINE__));
@@ -1529,7 +1531,11 @@
 			return NT_STATUS_NO_MEMORY;
  	}
  
-	r_u->status = NT_STATUS_NONE_MAPPED;
+	if (!sid_equal(&pol_sid, get_global_sam_sid())) {
+		/* TODO: Sooner or later we need to look up BUILTIN rids as
+		 * well. -- vl */
+		goto done;
+	}
 
 	become_root();  /* lookup_sid can require root privs */
 
@@ -1542,21 +1548,30 @@
 		group_attrs[i] = SID_NAME_UNKNOWN;
 		*group_names[i] = '\0';
 
-		if (sid_equal(&pol_sid, get_global_sam_sid())) {
-			sid_copy(&sid, &pol_sid);
-			sid_append_rid(&sid, q_u->rid[i]);
+		sid_copy(&sid, &pol_sid);
+		sid_append_rid(&sid, q_u->rid[i]);
 
-			if (lookup_sid(&sid, domname, tmpname, &type)) {
-				r_u->status = NT_STATUS_OK;
-				group_attrs[i] = (uint32)type;
-				fstrcpy(group_names[i],tmpname);
-				DEBUG(5,("_samr_lookup_rids: %s:%d\n", group_names[i], group_attrs[i]));
-			}
+		if (lookup_sid(&sid, domname, tmpname, &type)) {
+			group_attrs[i] = (uint32)type;
+			fstrcpy(group_names[i],tmpname);
+			DEBUG(5,("_samr_lookup_rids: %s:%d\n", group_names[i],
+				 group_attrs[i]));
+			have_mapped = True;
+		} else {
+			have_unmapped = True;
 		}
 	}
 
 	unbecome_root();
 
+ done:
+
+	r_u->status = NT_STATUS_NONE_MAPPED;
+
+	if (have_mapped)
+		r_u->status =
+			have_unmapped ? STATUS_SOME_UNMAPPED : NT_STATUS_OK;
+
 	if(!make_samr_lookup_rids(p->mem_ctx, num_rids, group_names, &hdr_name, &uni_name))
 		return NT_STATUS_NO_MEMORY;
 

Modified: branches/SAMBA_3_0/source/rpcclient/cmd_samr.c
===================================================================
--- branches/SAMBA_3_0/source/rpcclient/cmd_samr.c	2005-02-20 13:47:52 UTC (rev 5468)
+++ branches/SAMBA_3_0/source/rpcclient/cmd_samr.c	2005-02-20 14:26:58 UTC (rev 5469)
@@ -1431,7 +1431,8 @@
 				      flags, num_rids, rids,
 				      &num_names, &names, &name_types);
 
-	if (!NT_STATUS_IS_OK(result))
+	if (!NT_STATUS_IS_OK(result) &&
+	    !NT_STATUS_EQUAL(result, STATUS_SOME_UNMAPPED))
 		goto done;
 
 	/* Display results */



More information about the samba-cvs mailing list