1
0
mirror of git://git.sv.gnu.org/coreutils.git synced 2026-07-25 18:19:00 +02:00

id: undo previous commit, which was done by mistake

* src/id.c (GETID_MAY_FAIL, main, print_full_info): Undo previous change.
This commit is contained in:
Paul Eggert
2011-11-15 08:41:16 -08:00
parent 06ca3797ac
commit 7db79cc4f8
+12 -19
View File
@@ -38,6 +38,13 @@
proper_name ("Arnold Robbins"), \
proper_name ("David MacKenzie")
/* Whether the functions getuid, geteuid, getgid and getegid may fail. */
#ifdef __GNU__
# define GETID_MAY_FAIL 1
#else
# define GETID_MAY_FAIL 0
#endif
/* If nonzero, output only the SELinux context. -Z */
static int just_context = 0;
@@ -201,36 +208,22 @@ main (int argc, char **argv)
}
else
{
/* On GNU/Hurd hosts, getuid etc. can fail and return -1.
However, on GNU/Linux hosts, uid_t is an unsigned value and
getuid etc. can return the positive value (uid_t) -1. To
handle both cases correctly, consider getuid etc. to fail if
it returns a negative value (a value that is impossible on
GNU/Linux hosts).
GNU/Linux sysadmins should not give users the UID (uid_t) -1
even though uid_t is unsigned, as system calls like chown would
not have the desired behavior with such a UID, and other
coreutils applications therefore do not support such a UID.
However, 'id' makes a special attempt to handle this UID, to
help people diagnose the problem. */
euid = geteuid ();
if (euid < 0 && !use_real
if (GETID_MAY_FAIL && euid == -1 && !use_real
&& !just_group && !just_group_list && !just_context)
error (EXIT_FAILURE, errno, _("cannot get effective UID"));
ruid = getuid ();
if (ruid < 0 && use_real
if (GETID_MAY_FAIL && ruid == -1 && use_real
&& !just_group && !just_group_list && !just_context)
error (EXIT_FAILURE, errno, _("cannot get real UID"));
egid = getegid ();
if (egid < 0 && !use_real && !just_user)
if (GETID_MAY_FAIL && egid == -1 && !use_real && !just_user)
error (EXIT_FAILURE, errno, _("cannot get effective GID"));
rgid = getgid ();
if (rgid < 0 && use_real && !just_user)
if (GETID_MAY_FAIL && rgid == -1 && use_real && !just_user)
error (EXIT_FAILURE, errno, _("cannot get real GID"));
}
@@ -323,7 +316,7 @@ print_full_info (const char *username)
gid_t *groups;
int i;
int n_groups = xgetgroups (username, (pwd ? pwd->pw_gid : -1),
int n_groups = xgetgroups (username, (pwd ? pwd->pw_gid : (gid_t) -1),
&groups);
if (n_groups < 0)
{