--- 3.0.1/nsswitch/winbind_nss_linux.c Thu Dec 4 21:38:37 2003 +++ 3.0.1/nsswitch/winbind_nss_linux.c Tue Jan 27 16:56:17 2004 @@ -809,6 +809,9 @@ struct winbindd_request request; struct winbindd_response response; int i; + int j; + int duplicate; + int start_ndx = *start; #ifdef DEBUG_NSS fprintf(stderr, "[%5d]: initgroups %s (%d)\n", getpid(), @@ -831,9 +834,13 @@ for (i = 0; i < num_gids; i++) { - /* Skip primary group */ + /* Skip any group ids that are already identified */ - if (gid_list[i] == group) continue; + duplicate = (gid_list[i] == group); + for (j = start_ndx; !duplicate && j < limit; j++) { + duplicate = (gid_list[i] == (*groups)[j]); + } + if (duplicate) continue; /* Add to buffer */