diff options
author | Stefan Metzmacher <metze@samba.org> | 2017-03-20 12:56:00 +0100 |
---|---|---|
committer | Stefan Metzmacher <metze@samba.org> | 2018-02-27 16:00:12 +0100 |
commit | d210946f50cb155a5a0ec679841ef0d5285e4af2 (patch) | |
tree | 66c71e56cdba79617d1b7ad5bac96703e343c6d4 /source4/rpc_server | |
parent | 42768011c543f086307f9b022e3bde961420debc (diff) | |
download | samba-d210946f50cb155a5a0ec679841ef0d5285e4af2.tar.gz |
s4:rpc_server/lsa: simplify [ref] pointer handling in dcesrv_lsa_LookupNames()
Bug: https://bugzilla.samba.org/show_bug.cgi?id=13286
Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Ralph Boehme <slow@samba.org>
(cherry picked from commit 7c1c9bf53ffc24a25038326767e33f008c7a5552)
Diffstat (limited to 'source4/rpc_server')
-rw-r--r-- | source4/rpc_server/lsa/lsa_lookup.c | 24 |
1 files changed, 10 insertions, 14 deletions
diff --git a/source4/rpc_server/lsa/lsa_lookup.c b/source4/rpc_server/lsa/lsa_lookup.c index 400b5214a1a..defcef5089a 100644 --- a/source4/rpc_server/lsa/lsa_lookup.c +++ b/source4/rpc_server/lsa/lsa_lookup.c @@ -1120,6 +1120,13 @@ NTSTATUS dcesrv_lsa_LookupNames(struct dcesrv_call_state *dce_call, TALLOC_CTX * r->out.sids->sids = NULL; *r->out.count = 0; + r->out.sids->sids = talloc_zero_array(r->out.sids, + struct lsa_TranslatedSid, + r->in.num_names); + if (r->out.sids->sids == NULL) { + return NT_STATUS_NO_MEMORY; + } + ZERO_STRUCT(r2); r2.in.handle = r->in.handle; @@ -1141,25 +1148,14 @@ NTSTATUS dcesrv_lsa_LookupNames(struct dcesrv_call_state *dce_call, TALLOC_CTX * r2.out.domains = r->out.domains; status = dcesrv_lsa_LookupNames2(dce_call, mem_ctx, &r2); - if (r2.out.sids == NULL) { - return status; - } - r->out.sids = talloc(mem_ctx, struct lsa_TransSidArray); - if (r->out.sids == NULL) { - return NT_STATUS_NO_MEMORY; - } - r->out.sids->count = r2.out.sids->count; - r->out.sids->sids = talloc_array(r->out.sids, struct lsa_TranslatedSid, - r->out.sids->count); - if (r->out.sids->sids == NULL) { - return NT_STATUS_NO_MEMORY; - } - for (i=0;i<r->out.sids->count;i++) { + SMB_ASSERT(r2.out.sids->count <= r->in.num_names); + for (i=0;i<r2.out.sids->count;i++) { r->out.sids->sids[i].sid_type = r2.out.sids->sids[i].sid_type; r->out.sids->sids[i].rid = r2.out.sids->sids[i].rid; r->out.sids->sids[i].sid_index = r2.out.sids->sids[i].sid_index; } + r->out.sids->count = r2.out.sids->count; return status; } |