summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJim Meyering <meyering@redhat.com>2008-01-23 14:12:04 +0100
committerJim Meyering <meyering@redhat.com>2008-01-26 10:04:17 +0100
commitd81716addb44a89c69c1bcb7643f4792e77881ff (patch)
treedbe67621a0ac65764a1649483ca901051e274524
parent3b9b0c5c161e4df0d0b64128241c2d924f70858b (diff)
downloadcoreutils-d81716addb44a89c69c1bcb7643f4792e77881ff.tar.xz
Avoid misinterpreting mgetgroups failure in running root-only tests.
* src/setuidgid.c (main): Don't misinterpret as size_t an error return from mgetgroups. Reported by Theodoros V. Kalamatianos.
-rw-r--r--ChangeLog4
-rw-r--r--THANKS1
-rw-r--r--src/setuidgid.c7
3 files changed, 9 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index 79ec5efd4..80be17238 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,9 @@
2008-01-23 Jim Meyering <meyering@redhat.com>
+ Avoid misinterpreting mgetgroups failure in running root-only tests.
+ * src/setuidgid.c (main): Don't misinterpret as size_t an error
+ return from mgetgroups. Reported by Theodoros V. Kalamatianos.
+
* README: Remove/convert a few stray mentions of CVS.
2008-01-22 Jim Meyering <meyering@redhat.com>
diff --git a/THANKS b/THANKS
index 512149504..9e4e7e03d 100644
--- a/THANKS
+++ b/THANKS
@@ -488,6 +488,7 @@ Tadayoshi Funaba tadf@kt.rim.or.jp
TAKAI Kousuke takai@vlsi.kuee.kyoto-u.ac.jp
Theodore Ts'o tytso@rsts-11.mit.edu
The Wanderer inverseparadox@comcast.net
+Theodoros V. Kalamatianos nyb@users.sourceforge.net
Thomas Bushnell thomas@gnu.ai.mit.edu
Thomas Goerlich thomas@schnappmatik.de
Thomas Hood jdthood@yahoo.co.uk
diff --git a/src/setuidgid.c b/src/setuidgid.c
index 0f551f9cf..83369fdef 100644
--- a/src/setuidgid.c
+++ b/src/setuidgid.c
@@ -1,5 +1,5 @@
/* setuidgid - run a command with the UID and GID of a specified user
- Copyright (C) 2003-2007 Free Software Foundation, Inc.
+ Copyright (C) 2003-2008 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
@@ -181,10 +181,11 @@ main (int argc, char **argv)
#if HAVE_SETGROUPS
if (n_gids == 0)
{
- n_gids = mgetgroups (pwd->pw_name, pwd->pw_gid, &gids);
- if (n_gids <= 0)
+ int n = mgetgroups (pwd->pw_name, pwd->pw_gid, &gids);
+ if (n <= 0)
error (1, errno, _("failed to get groups for user %s"),
quote (pwd->pw_name));
+ n_gids = n;
}
if (setgroups (n_gids, gids))