diff options
author | Michael Adam <obnox@samba.org> | 2015-03-09 15:15:37 +0100 |
---|---|---|
committer | Andreas Schneider <asn@cryptomilk.org> | 2015-03-09 19:23:25 +0100 |
commit | f5d0204bfa1eb641fe7697613c1f773b6a7e65de (patch) | |
tree | 7f99d8a52ab889ea286a8fed788f430e23049981 | |
parent | 02f6cfd14c8ac15b5d8a55783bb98a87557394d5 (diff) | |
download | samba-f5d0204bfa1eb641fe7697613c1f773b6a7e65de.tar.gz samba-f5d0204bfa1eb641fe7697613c1f773b6a7e65de.tar.xz samba-f5d0204bfa1eb641fe7697613c1f773b6a7e65de.zip |
s3-winbind: Fix chached user group lookup of trusted domains.
If a user group lookup has aleady been done before with a machine
account we did always return the incomplete information from the cache.
This patch makes sure we return the correct group information from the
netsamlogon cache.
BUG: https://bugzilla.samba.org/show_bug.cgi?id=11143
Pair-Programmed-With: Andreas Schneider <asn@samba.org>
Signed-off-by: Michael Adam <obnox@samba.org>
Signed-off-by: Andreas Schneider <asn@samba.org>
Reviewed-by: Volker Lendecke <vl@samba.org>
Autobuild-User(master): Andreas Schneider <asn@cryptomilk.org>
Autobuild-Date(master): Mon Mar 9 19:23:25 CET 2015 on sn-devel-104
-rw-r--r-- | source3/winbindd/wb_lookupusergroups.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/source3/winbindd/wb_lookupusergroups.c b/source3/winbindd/wb_lookupusergroups.c index b91de78c76..f74a20693b 100644 --- a/source3/winbindd/wb_lookupusergroups.c +++ b/source3/winbindd/wb_lookupusergroups.c @@ -37,6 +37,7 @@ struct tevent_req *wb_lookupusergroups_send(TALLOC_CTX *mem_ctx, { struct tevent_req *req, *subreq; struct wb_lookupusergroups_state *state; + NTSTATUS status; req = tevent_req_create(mem_ctx, &state, struct wb_lookupusergroups_state); @@ -45,6 +46,16 @@ struct tevent_req *wb_lookupusergroups_send(TALLOC_CTX *mem_ctx, } sid_copy(&state->sid, sid); + status = lookup_usergroups_cached(NULL, + state, + &state->sid, + &state->sids.num_sids, + &state->sids.sids); + if (NT_STATUS_IS_OK(status)) { + tevent_req_done(req); + return tevent_req_post(req, ev); + } + subreq = dcerpc_wbint_LookupUserGroups_send( state, ev, dom_child_handle(domain), &state->sid, &state->sids); if (tevent_req_nomem(subreq, req)) { |