diff options
author | Jeremy Allison <jra@samba.org> | 2004-11-15 23:03:37 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 10:53:17 -0500 |
commit | 3b40c1e4365f37b967e14be02c6aa52893a80f51 (patch) | |
tree | 1b7fa0349de3e74877ecf2bd11edff00e282980a | |
parent | 1bc79a28080f2ff783b49e5cf3adfdfc4a4940ee (diff) | |
download | samba-3b40c1e4365f37b967e14be02c6aa52893a80f51.tar.gz samba-3b40c1e4365f37b967e14be02c6aa52893a80f51.tar.xz samba-3b40c1e4365f37b967e14be02c6aa52893a80f51.zip |
r3776: Fix for bug #2038 from Johann Hanne <jhml@gmx.net>. Don't check
for no groups after every lookup - move check to the end as we should
only fail if all lookups fail.
Jeremy.
-rw-r--r-- | source/nsswitch/winbindd_group.c | 13 |
1 files changed, 4 insertions, 9 deletions
diff --git a/source/nsswitch/winbindd_group.c b/source/nsswitch/winbindd_group.c index eec0f722177..7eb0585c374 100644 --- a/source/nsswitch/winbindd_group.c +++ b/source/nsswitch/winbindd_group.c @@ -1089,9 +1089,6 @@ enum winbindd_result winbindd_getgroups(struct winbindd_cli_state *state) add_gids_from_group_sid(&info3->other_sids[i].sid, &gid_list, &num_gids); - - if (gid_list == NULL) - goto done; } for (i = 0; i < info3->num_groups2; i++) { @@ -1103,9 +1100,6 @@ enum winbindd_result winbindd_getgroups(struct winbindd_cli_state *state) add_gids_from_group_sid(&group_sid, &gid_list, &num_gids); - - if (gid_list == NULL) - goto done; } SAFE_FREE(info3); @@ -1123,12 +1117,13 @@ enum winbindd_result winbindd_getgroups(struct winbindd_cli_state *state) for (i = 0; i < num_groups; i++) { add_gids_from_group_sid(user_grpsids[i], &gid_list, &num_gids); - - if (gid_list == NULL) - goto done; } } + /* We want at least one group... */ + if (gid_list == NULL) + goto done; + remove_duplicate_gids( &num_gids, gid_list ); /* Send data back to client */ |