From bf3840957f16ad999515c5c5287f6ef13e211379 Mon Sep 17 00:00:00 2001 From: Jim Meyering Date: Fri, 13 Mar 1998 15:24:43 +0000 Subject: [PATCH] (getugroups): Don't add a group number if it would be a duplicate. From Ulrich Drepper. --- lib/getugroups.c | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/lib/getugroups.c b/lib/getugroups.c index 6c818f110..7b99d649b 100644 --- a/lib/getugroups.c +++ b/lib/getugroups.c @@ -1,5 +1,5 @@ /* getugroups.c -- return a list of the groups a user is in - Copyright (C) 1990, 1991 Free Software Foundation. + Copyright (C) 1990, 1991, 1998 Free Software Foundation. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -59,16 +59,27 @@ getugroups (maxcount, grouplist, username) for (cp = grp->gr_mem; *cp; ++cp) if (!strcmp (username, *cp)) { - if (maxcount != 0) + int n; + + /* See if this group number is already on the list. */ + for (n = 0; n < count; ++n) + if (grouplist[n] == grp->gr_gid) + break; + + /* If it's a new group number, then try to add it to the list. */ + if (n == count) { - if (count >= maxcount) + if (maxcount != 0) { - endgrent (); - return count; + if (count >= maxcount) + { + endgrent (); + return count; + } + grouplist[count] = grp->gr_gid; } - grouplist[count] = grp->gr_gid; + count++; } - count++; } endgrent (); return count; -- 2.11.0