Author: jerry Date: 2006-03-24 22:04:16 +0000 (Fri, 24 Mar 2006) New Revision: 14698
WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=14698 Log: Make sure we expand our own local groups and not just the BUILTIN group when calling winbindd_getgroups. $ id foo uid=502(foo) gid=100(users) groups=100(users),10007(RHEL4\staff), 10001(BUILTIN\users) Modified: branches/SAMBA_3_0/source/nsswitch/winbindd_async.c trunk/source/nsswitch/winbindd_async.c Changeset: Modified: branches/SAMBA_3_0/source/nsswitch/winbindd_async.c =================================================================== --- branches/SAMBA_3_0/source/nsswitch/winbindd_async.c 2006-03-24 19:13:21 UTC (rev 14697) +++ branches/SAMBA_3_0/source/nsswitch/winbindd_async.c 2006-03-24 22:04:16 UTC (rev 14698) @@ -956,6 +956,7 @@ TALLOC_CTX *mem_ctx; DOM_SID user_sid; struct winbindd_domain *alias_domain; + struct winbindd_domain *local_alias_domain; struct winbindd_domain *builtin_domain; DOM_SID *sids; size_t num_sids; @@ -990,6 +991,7 @@ state->mem_ctx = mem_ctx; sid_copy(&state->user_sid, user_sid); state->alias_domain = find_our_domain(); + state->local_alias_domain = find_domain_from_name( get_global_sam_name() ); state->builtin_domain = find_builtin_domain(); state->cont = cont; state->private_data = private_data; @@ -1081,9 +1083,19 @@ add_sid_to_array(state->mem_ctx, &aliases[i], &state->sids, &state->num_sids); + if (state->local_alias_domain != NULL) { + struct winbindd_domain *local_domain = state->local_alias_domain; + DEBUG(10, ("Expanding our own local groups\n")); + state->local_alias_domain = NULL; + winbindd_getsidaliases_async(local_domain, state->mem_ctx, + state->sids, state->num_sids, + gettoken_recvaliases, state); + return; + } + if (state->builtin_domain != NULL) { struct winbindd_domain *builtin_domain = state->builtin_domain; - DEBUG(10, ("Expanding our own local groups\n")); + DEBUG(10, ("Expanding our own BUILTIN groups\n")); state->builtin_domain = NULL; winbindd_getsidaliases_async(builtin_domain, state->mem_ctx, state->sids, state->num_sids, Modified: trunk/source/nsswitch/winbindd_async.c =================================================================== --- trunk/source/nsswitch/winbindd_async.c 2006-03-24 19:13:21 UTC (rev 14697) +++ trunk/source/nsswitch/winbindd_async.c 2006-03-24 22:04:16 UTC (rev 14698) @@ -956,6 +956,7 @@ TALLOC_CTX *mem_ctx; DOM_SID user_sid; struct winbindd_domain *alias_domain; + struct winbindd_domain *local_alias_domain; struct winbindd_domain *builtin_domain; DOM_SID *sids; size_t num_sids; @@ -990,6 +991,7 @@ state->mem_ctx = mem_ctx; sid_copy(&state->user_sid, user_sid); state->alias_domain = find_our_domain(); + state->local_alias_domain = find_domain_from_name( get_global_sam_name() ); state->builtin_domain = find_builtin_domain(); state->cont = cont; state->private_data = private_data; @@ -1081,9 +1083,19 @@ add_sid_to_array(state->mem_ctx, &aliases[i], &state->sids, &state->num_sids); + if (state->local_alias_domain != NULL) { + struct winbindd_domain *local_domain = state->local_alias_domain; + DEBUG(10, ("Expanding our own local groups\n")); + state->local_alias_domain = NULL; + winbindd_getsidaliases_async(local_domain, state->mem_ctx, + state->sids, state->num_sids, + gettoken_recvaliases, state); + return; + } + if (state->builtin_domain != NULL) { struct winbindd_domain *builtin_domain = state->builtin_domain; - DEBUG(10, ("Expanding our own local groups\n")); + DEBUG(10, ("Expanding our own BUILTIN groups\n")); state->builtin_domain = NULL; winbindd_getsidaliases_async(builtin_domain, state->mem_ctx, state->sids, state->num_sids,
