summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Metzmacher <metze@samba.org>2005-08-23 09:45:38 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 13:34:24 -0500
commit7b211a11c34d15aa51d40bab34080e31e48140d9 (patch)
tree2851fb4686ed1894da62362499edeaab2607bf5e
parentaaa0aff2d6cea65b07320790c16fff127c12a65b (diff)
downloadsamba-7b211a11c34d15aa51d40bab34080e31e48140d9.tar.gz
samba-7b211a11c34d15aa51d40bab34080e31e48140d9.tar.bz2
samba-7b211a11c34d15aa51d40bab34080e31e48140d9.zip
r9511: - fix the memory trees
- add a note about a possible talloc_free() metze (This used to be commit 550e3030f0e02720b527f3b4923457f05f484e6e)
-rw-r--r--source4/libcli/security/security_descriptor.c5
-rw-r--r--source4/libcli/security/security_token.c10
2 files changed, 8 insertions, 7 deletions
diff --git a/source4/libcli/security/security_descriptor.c b/source4/libcli/security/security_descriptor.c
index 703abf7970..c28960be80 100644
--- a/source4/libcli/security/security_descriptor.c
+++ b/source4/libcli/security/security_descriptor.c
@@ -317,14 +317,14 @@ struct security_descriptor *security_descriptor_create(TALLOC_CTX *mem_ctx,
if (sd == NULL) return NULL;
if (owner_sid) {
- sd->owner_sid = dom_sid_parse_talloc(mem_ctx, owner_sid);
+ sd->owner_sid = dom_sid_parse_talloc(sd, owner_sid);
if (sd->owner_sid == NULL) {
talloc_free(sd);
return NULL;
}
}
if (group_sid) {
- sd->group_sid = dom_sid_parse_talloc(mem_ctx, group_sid);
+ sd->group_sid = dom_sid_parse_talloc(sd, group_sid);
if (sd->group_sid == NULL) {
talloc_free(sd);
return NULL;
@@ -353,6 +353,7 @@ struct security_descriptor *security_descriptor_create(TALLOC_CTX *mem_ctx,
}
ace->trustee = *sid;
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);
diff --git a/source4/libcli/security/security_token.c b/source4/libcli/security/security_token.c
index ea1fae0c33..a23aa92bf3 100644
--- a/source4/libcli/security/security_token.c
+++ b/source4/libcli/security/security_token.c
@@ -78,14 +78,14 @@ NTSTATUS security_token_create(TALLOC_CTX *mem_ctx,
* The only difference between guest and "anonymous"
* is the addition of Authenticated_Users.
*/
- ptoken->sids[2] = dom_sid_parse_talloc(mem_ctx, SID_WORLD);
+ ptoken->sids[2] = dom_sid_parse_talloc(ptoken->sids, SID_WORLD);
NT_STATUS_HAVE_NO_MEMORY(ptoken->sids[2]);
- ptoken->sids[3] = dom_sid_parse_talloc(mem_ctx, SID_NT_NETWORK);
+ ptoken->sids[3] = dom_sid_parse_talloc(ptoken->sids, SID_NT_NETWORK);
NT_STATUS_HAVE_NO_MEMORY(ptoken->sids[3]);
ptoken->num_sids = 4;
if (is_authenticated) {
- ptoken->sids[4] = dom_sid_parse_talloc(mem_ctx, SID_NT_AUTHENTICATED_USERS);
+ ptoken->sids[4] = dom_sid_parse_talloc(ptoken->sids, SID_NT_AUTHENTICATED_USERS);
NT_STATUS_HAVE_NO_MEMORY(ptoken->sids[4]);
ptoken->num_sids++;
}
@@ -99,9 +99,9 @@ NTSTATUS security_token_create(TALLOC_CTX *mem_ctx,
break;
}
}
-
+
if (check_sid_idx == ptoken->num_sids) {
- ptoken->sids[ptoken->num_sids++] = talloc_reference(ptoken, groupSIDs[i]);
+ ptoken->sids[ptoken->num_sids++] = talloc_reference(ptoken->sids, groupSIDs[i]);
}
}