Close the group DB even when failing with 2^31 or more members.
authorJim Meyering <jim@meyering.net>
Thu, 5 Jul 2007 07:28:20 +0000 (07:28 +0000)
committerJim Meyering <jim@meyering.net>
Thu, 5 Jul 2007 07:28:20 +0000 (07:28 +0000)
* lib/getugroups.c (getugroups): Don't return without calling endgrent.

ChangeLog
lib/getugroups.c

index ffdb2c2..b2bd707 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2007-07-05  Jim Meyering  <jim@meyering.net>
+
+       Close the group DB even when failing with 2^31 or more members.
+       * lib/getugroups.c (getugroups): Don't return without calling endgrent.
+
 2007-07-04  Jim Meyering  <jim@meyering.net>
 
        * lib/getugroups.h: New file.
index 0293d27..d63a607 100644 (file)
@@ -84,21 +84,21 @@ getugroups (int maxcount, GETGROUPS_T *grouplist, char const *username,
              if (maxcount != 0)
                {
                  if (count >= maxcount)
-                   {
-                     endgrent ();
-                     return count;
-                   }
+                   goto done;
                  grouplist[count] = grp->gr_gid;
                }
              count++;
              if (count < 0)
                {
                  errno = EOVERFLOW;
-                 return -1;
+                 count = -1;
+                 goto done;
                }
            }
        }
     }
+
+ done:
   endgrent ();
 
   return count;