diff options
author | Jeremy Allison <jra@samba.org> | 2001-06-26 06:31:55 +0000 |
---|---|---|
committer | Jeremy Allison <jra@samba.org> | 2001-06-26 06:31:55 +0000 |
commit | 274c0f5028d41175222dfaaf446e3ed8f5687a5f (patch) | |
tree | 38b9b7c3ff61960050ccb3df90f317e4091ba783 | |
parent | a48d480ce986ff1c00f2c17f30f23723ce0bb044 (diff) | |
download | samba-274c0f5028d41175222dfaaf446e3ed8f5687a5f.tar.gz samba-274c0f5028d41175222dfaaf446e3ed8f5687a5f.tar.xz samba-274c0f5028d41175222dfaaf446e3ed8f5687a5f.zip |
Ensure we always have a valid pointer on unmarshalling an SD with zero
ace entries.
Jeremy.
-rw-r--r-- | source/rpc_parse/parse_sec.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/source/rpc_parse/parse_sec.c b/source/rpc_parse/parse_sec.c index 7cc4d054fa2..b202c2a3566 100644 --- a/source/rpc_parse/parse_sec.c +++ b/source/rpc_parse/parse_sec.c @@ -211,9 +211,13 @@ BOOL sec_io_acl(char *desc, SEC_ACL **ppsa, prs_struct *ps, int depth) if(!prs_uint32("num_aces ", ps, depth, &psa->num_aces)) return False; - if (UNMARSHALLING(ps) && psa->num_aces != 0) { - /* reading */ - if((psa->ace = (SEC_ACE *)prs_alloc_mem(ps,sizeof(psa->ace[0]) * psa->num_aces)) == NULL) + if (UNMARSHALLING(ps)) { + /* + * Even if the num_aces is zero, allocate memory as there's a difference + * between a non-present DACL (allow all access) and a DACL with no ACE's + * (allow no access). + */ + if((psa->ace = (SEC_ACE *)prs_alloc_mem(ps,sizeof(psa->ace[0]) * (psa->num_aces+1))) == NULL) return False; } |