summaryrefslogtreecommitdiffstats
path: root/source
diff options
context:
space:
mode:
authorJeremy Allison <jra@samba.org>2007-05-04 19:14:51 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 12:19:54 -0500
commit9e4c6ab7392b2dbaccfaced88d3bc7502ff073ee (patch)
tree36dfd1f0f963c0aec5232085eac9bed7aecaa16e /source
parent0f436eab5b2e5891c341c27cb22db52a72bf1af7 (diff)
downloadsamba-9e4c6ab7392b2dbaccfaced88d3bc7502ff073ee.tar.gz
samba-9e4c6ab7392b2dbaccfaced88d3bc7502ff073ee.tar.xz
samba-9e4c6ab7392b2dbaccfaced88d3bc7502ff073ee.zip
r22673: Fix for Jerry's reversion. We still need to check size
before talloc. Jeremy.
Diffstat (limited to 'source')
-rw-r--r--source/rpc_parse/parse_samr.c20
1 files changed, 16 insertions, 4 deletions
diff --git a/source/rpc_parse/parse_samr.c b/source/rpc_parse/parse_samr.c
index 296296ac5a3..529ad319bb8 100644
--- a/source/rpc_parse/parse_samr.c
+++ b/source/rpc_parse/parse_samr.c
@@ -4838,9 +4838,14 @@ BOOL samr_io_r_query_aliasmem(const char *desc, SAMR_R_QUERY_ALIASMEM * r_u,
if(!prs_uint32("num_sids1", ps, depth, &r_u->num_sids1))
return False;
- ptr_sid = TALLOC_ARRAY(ps->mem_ctx, uint32, r_u->num_sids1);
- if (!ptr_sid) {
- return False;
+ /* We must always use talloc here even when marshalling. */
+ if (r_u->num_sids1) {
+ ptr_sid = TALLOC_ARRAY(ps->mem_ctx, uint32, r_u->num_sids1);
+ if (!ptr_sid) {
+ return False;
+ }
+ } else {
+ ptr_sid = NULL;
}
for (i = 0; i < r_u->num_sids1; i++) {
@@ -4850,7 +4855,14 @@ BOOL samr_io_r_query_aliasmem(const char *desc, SAMR_R_QUERY_ALIASMEM * r_u,
}
if (UNMARSHALLING(ps)) {
- r_u->sid = TALLOC_ARRAY(ps->mem_ctx, DOM_SID2, r_u->num_sids1);
+ if (r_u->num_sids1) {
+ r_u->sid = TALLOC_ARRAY(ps->mem_ctx, DOM_SID2, r_u->num_sids1);
+ if (!r_u->sid) {
+ return False;
+ }
+ } else {
+ r_u->sid = NULL;
+ }
}
for (i = 0; i < r_u->num_sids1; i++) {