r23730: Squashed commit of the following:
authorGerald Carter <jerry@samba.org>
Thu, 5 Jul 2007 19:55:40 +0000 (19:55 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 17:23:49 +0000 (12:23 -0500)
commit 3941269fa01038fca242a197e8d7c1f234d45ea7
Author: Gerald (Jerry) Carter <jerry@samba.org>
Date:   Thu Jul 5 14:52:03 2007 -0500

    Two fixes for "winbind expand groups".

    (a) Update the counter for the number of new groups to resolve else
        we'll only expand one group member per level and drop the rest.
    (b) Don't reset the num_names counter in winbindd_ads.c:lookup_groupmem()
        or we'll drop the SIDs resolved to names via cache from the resulting
        list.

source/nsswitch/winbindd_ads.c
source/nsswitch/winbindd_group.c

index 6f1db55c62acf2cda67b5f216d991b0d804c7ad1..09289912f998d3b096e621fb955d50934c7d693a 100644 (file)
@@ -1017,7 +1017,11 @@ static NTSTATUS lookup_groupmem(struct winbindd_domain *domain,
                        DEBUG(10,("ads: lookup_groupmem: got sid %s from cache\n",
                                 sid_string_static(&sid)));
                        sid_copy(&(*sid_mem)[*num_names], &sid);
-                       (*names)[*num_names] = CONST_DISCARD(char *,name);
+                       (*names)[*num_names] = talloc_asprintf(*names, "%s%c%s",
+                                                              domain_name,
+                                                              *lp_winbind_separator(),
+                                                              name );
+
                        (*name_types)[*num_names] = name_type;
                        (*num_names)++;
                }
@@ -1055,7 +1059,6 @@ static NTSTATUS lookup_groupmem(struct winbindd_domain *domain,
                        /* Copy the entries over from the "_nocache" arrays 
                         * to the result arrays, skipping the gaps the 
                         * lookup_sids call left. */
-                       *num_names = 0;
                        for (i=0; i < num_nocache; i++) {
                                if (((names_nocache)[i] != NULL) && 
                                    ((name_types_nocache)[i] != SID_NAME_UNKNOWN)) 
index 2d83dd3870c481d044392ea49df26c7c0db6ebea..2b2ae7e5795861297029aa177512d58837f9e405 100644 (file)
@@ -576,6 +576,7 @@ static BOOL fill_grent_mem(struct winbindd_domain *domain,
                /* One more round */
                TALLOC_FREE(glist);
                glist = new_glist;
+               n_glist = n_new_glist;
        }
        TALLOC_FREE( glist );