svn commit: samba r25610 - in branches/SAMBA_4_0/source/libcli/security: .

gd at samba.org gd at samba.org
Wed Oct 10 13:49:16 GMT 2007


Author: gd
Date: 2007-10-10 13:49:15 +0000 (Wed, 10 Oct 2007)
New Revision: 25610

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

Log:
Add security_descriptor_appendv() which takes va_list directly.

Guenther

Modified:
   branches/SAMBA_4_0/source/libcli/security/security_descriptor.c


Changeset:
Modified: branches/SAMBA_4_0/source/libcli/security/security_descriptor.c
===================================================================
--- branches/SAMBA_4_0/source/libcli/security/security_descriptor.c	2007-10-10 13:23:06 UTC (rev 25609)
+++ branches/SAMBA_4_0/source/libcli/security/security_descriptor.c	2007-10-10 13:49:15 UTC (rev 25610)
@@ -338,13 +338,11 @@
   that would create a sd with one DACL ACE
 */
 
-struct security_descriptor *security_descriptor_append(struct security_descriptor *sd,
-						       ...)
+struct security_descriptor *security_descriptor_appendv(struct security_descriptor *sd,
+						        va_list ap)
 {
-	va_list ap;
 	const char *sidstr;
 
-	va_start(ap, sd);
 	while ((sidstr = va_arg(ap, const char *))) {
 		struct dom_sid *sid;
 		struct security_ace *ace = talloc(sd, struct security_ace);
@@ -352,7 +350,6 @@
 
 		if (ace == NULL) {
 			talloc_free(sd);
-			va_end(ap);
 			return NULL;
 		}
 		ace->type = va_arg(ap, unsigned int);
@@ -360,7 +357,6 @@
 		ace->flags = va_arg(ap, unsigned int);
 		sid = dom_sid_parse_talloc(ace, sidstr);
 		if (sid == NULL) {
-			va_end(ap);
 			talloc_free(sd);
 			return NULL;
 		}
@@ -368,15 +364,24 @@
 		status = security_descriptor_dacl_add(sd, ace);
 		/* TODO: check: would talloc_free(ace) here be correct? */
 		if (!NT_STATUS_IS_OK(status)) {
-			va_end(ap);
 			talloc_free(sd);
 			return NULL;
 		}
 	}
+
+	return sd;
+}
+
+struct security_descriptor *security_descriptor_append(struct security_descriptor *sd,
+						       ...)
+{
+	va_list ap;
+
+	va_start(ap, sd);
+	sd = security_descriptor_appendv(sd, ap);
 	va_end(ap);
 
 	return sd;
-
 }
 
 struct security_descriptor *security_descriptor_create(TALLOC_CTX *mem_ctx,
@@ -409,7 +414,7 @@
 	}
 
 	va_start(ap, group_sid);
-	sd = security_descriptor_append(sd, ap);
+	sd = security_descriptor_appendv(sd, ap);
 	va_end(ap);
 
 	return sd;



More information about the samba-cvs mailing list