summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Adam <obnox@samba.org>2015-03-09 15:15:37 +0100
committerAndreas Schneider <asn@cryptomilk.org>2015-03-09 19:23:25 +0100
commitf5d0204bfa1eb641fe7697613c1f773b6a7e65de (patch)
tree7f99d8a52ab889ea286a8fed788f430e23049981
parent02f6cfd14c8ac15b5d8a55783bb98a87557394d5 (diff)
downloadsamba-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.c11
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)) {