* grp/initgroups.c (initgroups) [NGROUPS_MAX != 0]: Always use sysconf
authorRoland McGrath <roland@gnu.org>
Tue, 17 Apr 2001 03:34:20 +0000 (03:34 +0000)
committerRoland McGrath <roland@gnu.org>
Tue, 17 Apr 2001 03:34:20 +0000 (03:34 +0000)
instead of the constant NGROUPS_MAX.  That way, the limit can be
raised in the kernel configuration without having to recompile libc.

* sysdeps/posix/euidaccess.c: Don't #include <limits.h> or try to
define NGROUPS_MAX; we don't use it here.

ChangeLog
grp/initgroups.c

index 46db036..d480a25 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2001-04-16  Roland McGrath  <roland@frob.com>
+
+       * grp/initgroups.c (initgroups) [NGROUPS_MAX != 0]: Always use sysconf
+       instead of the constant NGROUPS_MAX.  That way, the limit can be
+       raised in the kernel configuration without having to recompile libc.
+
+       * sysdeps/posix/euidaccess.c: Don't #include <limits.h> or try to
+       define NGROUPS_MAX; we don't use it here.
+
 2001-04-16  Andreas Jaeger  <aj@suse.de>
 
        * math/libm-test.inc (atan2_test): Add more testcases.
index 6ae7368..89dc4d6 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 1989, 91, 93, 1996-1999, 2000 Free Software Foundation, Inc.
+/* Copyright (C) 1989,91,93,1996-1999,2000,01 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -158,21 +158,21 @@ initgroups (user, group)
   /* Start is one, because we have the first group as parameter.  */
   long int start = 1;
   long int size;
-  long int limit;
   gid_t *groups;
   int result;
-#ifdef NGROUPS_MAX
-  size = NGROUPS_MAX;
-  limit = -1;
-#else
+
+  /* We always use sysconf even if NGROUPS_MAX is defined.  That way, the
+     limit can be raised in the kernel configuration without having to
+     recompile libc.  */
   long int limit = __sysconf (_SC_NGROUPS_MAX);
 
   if (limit > 0)
     size = limit;
   else
-    /* No fixed limit on groups.  Pick a starting buffer size.  */
-    size = 16;
-#endif
+    {
+      /* No fixed limit on groups.  Pick a starting buffer size.  */
+      size = 16;
+    }
 
   groups = (gid_t *) malloc (size * sizeof (gid_t));
   if (__builtin_expect (groups == NULL, 0))