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,

Reply via email to