diff options
author | Paul Eggert <eggert@cs.ucla.edu> | 2011-11-15 08:41:16 -0800 |
---|---|---|
committer | Paul Eggert <eggert@cs.ucla.edu> | 2011-11-15 08:41:35 -0800 |
commit | 7db79cc4f802aa39b6e03bbfce12c405381f8398 (patch) | |
tree | 871ad0f0ecce2188c3164948f3ca7cb2f0d0bd3d /src | |
parent | 06ca3797ac89c7c16a80ae8276bd23ef5b6f6a6f (diff) | |
download | coreutils-7db79cc4f802aa39b6e03bbfce12c405381f8398.tar.xz |
id: undo previous commit, which was done by mistake
* src/id.c (GETID_MAY_FAIL, main, print_full_info): Undo previous change.
Diffstat (limited to 'src')
-rw-r--r-- | src/id.c | 31 |
1 files changed, 12 insertions, 19 deletions
@@ -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) { |