The branch, master has been updated via beaf661b1ec winbind: Initialize idmap in winbindd_getgroups from 51a1f3666e8 tdbtorture: Fix CID 1034815,1034816: protect from out-of-bounds access
https://git.samba.org/?p=samba.git;a=shortlog;h=master - Log ----------------------------------------------------------------- commit beaf661b1ec1f048efc8eb2b383fc989a79ae009 Author: Volker Lendecke <v...@samba.org> Date: Fri Sep 12 18:19:29 2025 +0200 winbind: Initialize idmap in winbindd_getgroups Bug: https://bugzilla.samba.org/show_bug.cgi?id=15914 Signed-off-by: Volker Lendecke <v...@samba.org> Reviewed-by: Ralph Boehme <s...@samba.org> Autobuild-User(master): Volker Lendecke <v...@samba.org> Autobuild-Date(master): Sat Sep 13 05:44:20 UTC 2025 on atb-devel-224 ----------------------------------------------------------------------- Summary of changes: source3/winbindd/winbindd_getgroups.c | 29 +++++++++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) Changeset truncated at 500 lines: diff --git a/source3/winbindd/winbindd_getgroups.c b/source3/winbindd/winbindd_getgroups.c index 26933d9d788..2308da20ed3 100644 --- a/source3/winbindd/winbindd_getgroups.c +++ b/source3/winbindd/winbindd_getgroups.c @@ -38,6 +38,7 @@ struct winbindd_getgroups_state { gid_t *gids; }; +static void winbindd_getgroups_idmap_initialized(struct tevent_req *subreq); static void winbindd_getgroups_lookupname_done(struct tevent_req *subreq); static void winbindd_getgroups_gettoken_done(struct tevent_req *subreq); static void winbindd_getgroups_sid2gid_done(struct tevent_req *subreq); @@ -72,16 +73,40 @@ struct tevent_req *winbindd_getgroups_send(TALLOC_CTX *mem_ctx, return tevent_req_post(req, ev); } + subreq = wb_parent_idmap_setup_send(state, state->ev); + if (tevent_req_nomem(subreq, req)) { + return tevent_req_post(req, ev); + } + tevent_req_set_callback(subreq, + winbindd_getgroups_idmap_initialized, + req); + return req; +} + +static void winbindd_getgroups_idmap_initialized(struct tevent_req *subreq) +{ + struct tevent_req *req = tevent_req_callback_data(subreq, + struct tevent_req); + struct winbindd_getgroups_state *state = tevent_req_data( + req, struct winbindd_getgroups_state); + const struct wb_parent_idmap_config *cfg = NULL; + NTSTATUS status; + + status = wb_parent_idmap_setup_recv(subreq, &cfg); + TALLOC_FREE(subreq); + if (tevent_req_nterror(req, status)) { + return; + } + subreq = dcerpc_wbint_NormalizeNameUnmap_send(state, state->ev, idmap_child_handle(), state->request_name, &state->unmapped_name); if (tevent_req_nomem(subreq, req)) { - return tevent_req_post(req, ev); + return; } tevent_req_set_callback(subreq, winbindd_getgroups_unmap_done, req); - return req; } static void winbindd_getgroups_unmap_done(struct tevent_req *subreq) -- Samba Shared Repository