diff options
author | Pádraig Brady <P@draigBrady.com> | 2009-04-08 10:43:15 +0100 |
---|---|---|
committer | Pádraig Brady <P@draigBrady.com> | 2009-04-09 14:07:29 +0100 |
commit | bf87a2c8ea4487ca4448c9fe42a9c9858400acbd (patch) | |
tree | 74ecdd17b278c53f6cfcaee0bac7e2e1ee03559e /tests | |
parent | 148ddb3232e6319479222d4f7dee49b2c44ce21a (diff) | |
download | coreutils-bf87a2c8ea4487ca4448c9fe42a9c9858400acbd.tar.xz |
id: fix infinite loop on some systems
Steven Parkes reported that `id -G $USER` went into an infinite loop
on Darwin systems for users in more than 10 groups:
http://bugs.gentoo.org/show_bug.cgi?id=264007
* gl/lib/mgetgroups.c (mgetgroups): Work around buggy getgrouplist
implementations that don't update the required size correctly,
by doubling the result buffer and retrying. Also return the
parameter updated by getgrouplist rather than its return value,
as the documentation doesn't actually state the number of groups
stored is returned by getgrouplist.
* tests/misc/id-groups: Add test to exercise this logic
* tests/Makefile.am: Reference new test
* NEWS: Mention the fix
* THANKS: Update
Diffstat (limited to 'tests')
-rw-r--r-- | tests/Makefile.am | 1 | ||||
-rwxr-xr-x | tests/misc/id-groups | 28 |
2 files changed, 29 insertions, 0 deletions
diff --git a/tests/Makefile.am b/tests/Makefile.am index 07f34ec45..8ce6a2118 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -171,6 +171,7 @@ TESTS = \ misc/head-c \ misc/head-pos \ misc/id-context \ + misc/id-groups \ misc/md5sum \ misc/md5sum-newline \ misc/mknod \ diff --git a/tests/misc/id-groups b/tests/misc/id-groups new file mode 100755 index 000000000..dc0f54c29 --- /dev/null +++ b/tests/misc/id-groups @@ -0,0 +1,28 @@ +#!/bin/sh +# Ensure that "id" outputs groups for a user +# Copyright (C) 2009 Free Software Foundation, Inc. + +# 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 +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +if test "$VERBOSE" = yes; then + set -x + id --version +fi + +. $srcdir/test-lib.sh + +fail=0 +id -G $(id -nu) || fail=1 + +Exit $fail |