diff options
author | Ralph Boehme <slow@samba.org> | 2019-02-21 18:34:51 +0100 |
---|---|---|
committer | Karolin Seeger <kseeger@samba.org> | 2019-03-05 07:39:27 +0000 |
commit | a76277af385b10518dccf83ccb1b49173d625881 (patch) | |
tree | 84145cdcadcf932ff9fe13b0c0471e1658fef848 | |
parent | 0f1525d430ec4975952520b00cbd4c5e49f9b097 (diff) | |
download | samba-a76277af385b10518dccf83ccb1b49173d625881.tar.gz |
winbindd: make a copy of xid's in wb_xids2sids_send()
This is in preparation of setting the result of the mapping in the top-
level callback wb_xids2sids_done(), not in the per-idmap-domain callback
wb_xids2sids_dom_done().
When caching the mapping we need the id-type from the backend, so we
need a way to pass up that information from wb_xids2sids_dom_done() up
to wb_xids2sids_done()
The xids array copy gets passed from wb_xids2sids_send() to
wb_xids2sids_dom_send(), so wb_xids2sids_dom_done() can then directly
update the top-level copy.
Bug: https://bugzilla.samba.org/show_bug.cgi?id=13802
Signed-off-by: Ralph Boehme <slow@samba.org>
Reviewed-by: Volker Lendecke <vl@samba.org>
(cherry picked from commit f5a8bc2f945be45cdade5f70d4f975bae8337f67)
-rw-r--r-- | source3/winbindd/wb_xids2sids.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/source3/winbindd/wb_xids2sids.c b/source3/winbindd/wb_xids2sids.c index 0d21e55c25d..f4ff1a577d0 100644 --- a/source3/winbindd/wb_xids2sids.c +++ b/source3/winbindd/wb_xids2sids.c @@ -449,9 +449,14 @@ struct tevent_req *wb_xids2sids_send(TALLOC_CTX *mem_ctx, return NULL; } state->ev = ev; - state->xids = xids; state->num_xids = num_xids; + state->xids = talloc_array(state, struct unixid, num_xids); + if (tevent_req_nomem(state->xids, req)) { + return tevent_req_post(req, ev); + } + memcpy(state->xids, xids, num_xids * sizeof(struct unixid)); + state->sids = talloc_zero_array(state, struct dom_sid, num_xids); if (tevent_req_nomem(state->sids, req)) { return tevent_req_post(req, ev); |