svn commit: samba r16678 - in branches/SAMBA_3_0/source: nsswitch passdb rpc_server

jra at samba.org jra at samba.org
Thu Jun 29 17:03:20 GMT 2006


Author: jra
Date: 2006-06-29 17:03:19 +0000 (Thu, 29 Jun 2006)
New Revision: 16678

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

Log:
Fix bug #3898 reported by jason at ncac.gwu.edu.
Jeremy.

Modified:
   branches/SAMBA_3_0/source/nsswitch/winbindd_rpc.c
   branches/SAMBA_3_0/source/passdb/lookup_sid.c
   branches/SAMBA_3_0/source/rpc_server/srv_samr_nt.c


Changeset:
Modified: branches/SAMBA_3_0/source/nsswitch/winbindd_rpc.c
===================================================================
--- branches/SAMBA_3_0/source/nsswitch/winbindd_rpc.c	2006-06-29 17:02:08 UTC (rev 16677)
+++ branches/SAMBA_3_0/source/nsswitch/winbindd_rpc.c	2006-06-29 17:03:19 UTC (rev 16678)
@@ -294,7 +294,7 @@
 {
 	char **domains;
 	char **names;
-	uint32 *types;
+	enum SID_NAME_USE *types;
 	NTSTATUS result;
 	struct rpc_pipe_client *cli;
 	POLICY_HND lsa_policy;

Modified: branches/SAMBA_3_0/source/passdb/lookup_sid.c
===================================================================
--- branches/SAMBA_3_0/source/passdb/lookup_sid.c	2006-06-29 17:02:08 UTC (rev 16677)
+++ branches/SAMBA_3_0/source/passdb/lookup_sid.c	2006-06-29 17:03:19 UTC (rev 16678)
@@ -357,7 +357,7 @@
 				const DOM_SID *domain_sid,
 				int num_rids, uint32 *rids,
 				const char **domain_name,
-				const char **names, uint32 *types)
+				const char **names, enum SID_NAME_USE *types)
 {
 	/* Unless the winbind interface is upgraded, fall back to ask for
 	 * individual sids. I imagine introducing a lookuprids operation that

Modified: branches/SAMBA_3_0/source/rpc_server/srv_samr_nt.c
===================================================================
--- branches/SAMBA_3_0/source/rpc_server/srv_samr_nt.c	2006-06-29 17:02:08 UTC (rev 16677)
+++ branches/SAMBA_3_0/source/rpc_server/srv_samr_nt.c	2006-06-29 17:03:19 UTC (rev 16678)
@@ -1619,12 +1619,14 @@
 {
 	const char **names;
 	enum SID_NAME_USE *attrs = NULL;
+	uint32 *wire_attrs = NULL;
 	UNIHDR *hdr_name = NULL;
 	UNISTR2 *uni_name = NULL;
 	DOM_SID pol_sid;
 	int num_rids = q_u->num_rids1;
 	uint32 acc_granted;
-	
+	int i;
+
 	r_u->status = NT_STATUS_OK;
 
 	DEBUG(5,("_samr_lookup_rids: %d\n", __LINE__));
@@ -1640,9 +1642,10 @@
 	}
 
 	names = TALLOC_ZERO_ARRAY(p->mem_ctx, const char *, num_rids);
-	attrs = TALLOC_ZERO_ARRAY(p->mem_ctx, uint32, num_rids);
+	attrs = TALLOC_ZERO_ARRAY(p->mem_ctx, enum SID_NAME_USE, num_rids);
+	wire_attrs = TALLOC_ZERO_ARRAY(p->mem_ctx, uint32, num_rids);
 
-	if ((num_rids != 0) && ((names == NULL) || (attrs == NULL)))
+	if ((num_rids != 0) && ((names == NULL) || (attrs == NULL) || wire_attrs))
 		return NT_STATUS_NO_MEMORY;
 
 	become_root();  /* lookup_sid can require root privs */
@@ -1658,8 +1661,13 @@
 				  &hdr_name, &uni_name))
 		return NT_STATUS_NO_MEMORY;
 
-	init_samr_r_lookup_rids(r_u, num_rids, hdr_name, uni_name, attrs);
+	/* Convert from enum SID_NAME_USE to uint32 for wire format. */
+	for (i = 0; i < num_rids; i++) {
+		wire_attrs[i] = (uint32)attrs[i];
+	}
 
+	init_samr_r_lookup_rids(r_u, num_rids, hdr_name, uni_name, wire_attrs);
+
 	DEBUG(5,("_samr_lookup_rids: %d\n", __LINE__));
 
 	return r_u->status;



More information about the samba-cvs mailing list