svn commit: samba r20166 - in branches/SAMBA_4_0/source/libnet: .

metze at samba.org metze at samba.org
Thu Dec 14 08:23:56 GMT 2006


Author: metze
Date: 2006-12-14 08:23:55 +0000 (Thu, 14 Dec 2006)
New Revision: 20166

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

Log:
we have a dom_sid_add_rid() function that adds the rid after allocating
enough memory for the new sub_auth element.

the old version wrote behind the buffer.

also make the output sid a pointer.

metze
Modified:
   branches/SAMBA_4_0/source/libnet/libnet_lookup.c
   branches/SAMBA_4_0/source/libnet/libnet_lookup.h


Changeset:
Modified: branches/SAMBA_4_0/source/libnet/libnet_lookup.c
===================================================================
--- branches/SAMBA_4_0/source/libnet/libnet_lookup.c	2006-12-14 01:00:16 UTC (rev 20165)
+++ branches/SAMBA_4_0/source/libnet/libnet_lookup.c	2006-12-14 08:23:55 UTC (rev 20166)
@@ -406,13 +406,12 @@
 
 	if (NT_STATUS_IS_OK(status)) {
 		s = talloc_get_type(c->private_data, struct lookup_name_state);
-		
-		ZERO_STRUCT(io->out.domain_sid);
+
 		io->out.rid = 0;
+		io->out.sid = NULL;
 		io->out.sidstr = NULL;
 
 		if (*s->lookup.out.count > 0) {
-			int num_auths;
 			struct lsa_RefDomainList *domains = s->lookup.out.domains;
 			struct lsa_TransSidArray *sids = s->lookup.out.sids;
 
@@ -421,15 +420,13 @@
 			if (sids->count > 0) {
 				io->out.rid        = sids->sids[0].rid;
 				io->out.sid_type   = sids->sids[0].sid_type;
+				if (domains->count > 0) {
+					io->out.sid = dom_sid_add_rid(mem_ctx, domains->domains[0].sid, io->out.rid);
+					NT_STATUS_HAVE_NO_MEMORY(io->out.sid);
+					io->out.sidstr = dom_sid_string(mem_ctx, io->out.sid);
+					NT_STATUS_HAVE_NO_MEMORY(io->out.sidstr);
+				}
 			}
-
-			if (domains->count > 0) {
-				io->out.domain_sid = *domains->domains[0].sid;
-				num_auths = io->out.domain_sid.num_auths++;
-				io->out.domain_sid.sub_auths[num_auths] = io->out.rid;
-
-				io->out.sidstr     = dom_sid_string(mem_ctx, &io->out.domain_sid);
-			}
 		}
 
 		io->out.error_string = talloc_strdup(mem_ctx, "Success");
@@ -438,6 +435,7 @@
 		io->out.error_string = talloc_asprintf(mem_ctx, "Error: %s", nt_errstr(status));
 	}
 
+	talloc_free(c);
 	return status;
 }
 

Modified: branches/SAMBA_4_0/source/libnet/libnet_lookup.h
===================================================================
--- branches/SAMBA_4_0/source/libnet/libnet_lookup.h	2006-12-14 01:00:16 UTC (rev 20165)
+++ branches/SAMBA_4_0/source/libnet/libnet_lookup.h	2006-12-14 08:23:55 UTC (rev 20166)
@@ -49,7 +49,7 @@
 		const char *domain_name;
 	} in;
 	struct {
-		struct dom_sid domain_sid;
+		struct dom_sid *sid;
 		int rid;
 		enum lsa_SidType sid_type;
 		const char *sidstr;



More information about the samba-cvs mailing list