mirror of
https://github.com/samba-team/samba.git
synced 2024-12-24 21:34:56 +03:00
r25610: Add security_descriptor_appendv() which takes va_list directly.
Guenther
This commit is contained in:
parent
617091fb5a
commit
99408cf20c
@ -338,13 +338,11 @@ bool security_descriptor_mask_equal(const struct security_descriptor *sd1,
|
||||
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 @@ struct security_descriptor *security_descriptor_append(struct security_descripto
|
||||
|
||||
if (ace == NULL) {
|
||||
talloc_free(sd);
|
||||
va_end(ap);
|
||||
return NULL;
|
||||
}
|
||||
ace->type = va_arg(ap, unsigned int);
|
||||
@ -360,7 +357,6 @@ struct security_descriptor *security_descriptor_append(struct security_descripto
|
||||
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 @@ struct security_descriptor *security_descriptor_append(struct security_descripto
|
||||
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 @@ struct security_descriptor *security_descriptor_create(TALLOC_CTX *mem_ctx,
|
||||
}
|
||||
|
||||
va_start(ap, group_sid);
|
||||
sd = security_descriptor_append(sd, ap);
|
||||
sd = security_descriptor_appendv(sd, ap);
|
||||
va_end(ap);
|
||||
|
||||
return sd;
|
||||
|
Loading…
Reference in New Issue
Block a user