changeset 9044:20fba8637b7d

Close the group DB even when failing with 2^31 or more members. * lib/getugroups.c (getugroups): Don't return without calling endgrent.
author Jim Meyering <jim@meyering.net>
date Thu, 05 Jul 2007 07:28:20 +0000
parents c69012fcd861
children 11f2466d2f5b
files ChangeLog lib/getugroups.c
diffstat 2 files changed, 10 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- 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.
--- a/lib/getugroups.c
+++ b/lib/getugroups.c
@@ -84,21 +84,21 @@
 	      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;