bug-coreutils
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH] On AFS Systems groups where not outputted correctly


From: Didi
Subject: Re: [PATCH] On AFS Systems groups where not outputted correctly
Date: Tue, 4 Mar 2008 20:41:22 +0100

Looks fine to me. :)


On Tue, Mar 4, 2008 at 7:06 PM, Jim Meyering <address@hidden> wrote:
> Didi <address@hidden> wrote:
>  > After some work, here the final patch proposal.
>  >
>  > Thank you very much for your help Jim.
>  >
>  > Summary of the patch:
>  >
>  > On some systems with AFS 'id' and 'groups' outputted a very big group
>  > number if no user was specified on the command line. This is now
>  > fixed.
>
>  Thanks.
>  That would fail (dereference NULL) upon getpwuid failure.
>  How about this instead?
>
>  From 78ee912f890d64af43fc3a49d08bc19759a42ad0 Mon Sep 17 00:00:00 2001
>  From: ribalba <address@hidden>
>  Date: Tue, 4 Mar 2008 18:03:35 +0100
>  Subject: [PATCH] Work around AFS bug: id and groups would print invalid 
> group info
>
>  * src/id.c (main): Call print_group_list with a user name, if possible.
>  * src/groups.c (main): Likewise.
>  For details, see
>  http://thread.gmane.org/gmane.comp.gnu.coreutils.bugs/12852
>  http://thread.gmane.org/gmane.comp.gnu.coreutils.bugs/12875
>
>  Signed-off-by: ribalba <address@hidden>
>  ---
>   src/groups.c |    2 +-
>   src/id.c     |   11 ++++++++---
>   2 files changed, 9 insertions(+), 4 deletions(-)
>
>  diff --git a/src/groups.c b/src/groups.c
>  index baac7b9..c8e617b 100644
>  --- a/src/groups.c
>  +++ b/src/groups.c
>  @@ -102,7 +102,7 @@ main (int argc, char **argv)
>        egid = getegid ();
>        rgid = getgid ();
>
>  -      if (!print_group_list (NULL, ruid, rgid, egid, true))
>  +      if (!print_group_list (getlogin (), ruid, rgid, egid, true))
>          ok = false;
>        putchar ('\n');
>      }
>  diff --git a/src/id.c b/src/id.c
>  index e4eda40..9ee52e1 100644
>  --- a/src/id.c
>  +++ b/src/id.c
>  @@ -196,17 +196,22 @@ of a different user"));
>      error (EXIT_FAILURE, 0,
>            _("cannot print only names or real IDs in default format"));
>
>  +  char const *user_name;
>    if (argc - optind == 1)
>      {
>  -      struct passwd *pwd = getpwnam (argv[optind]);
>  +      struct passwd const *pwd = getpwnam (argv[optind]);
>        if (pwd == NULL)
>         error (EXIT_FAILURE, 0, _("%s: No such user"), argv[optind]);
>  +      user_name = argv[optind];
>        ruid = euid = pwd->pw_uid;
>        rgid = egid = pwd->pw_gid;
>      }
>    else
>      {
>  +      struct passwd const *pwd;
>        euid = geteuid ();
>  +      pwd = getpwuid (euid);
>  +      user_name = pwd ? pwd->pw_name : NULL;
>        ruid = getuid ();
>        egid = getegid ();
>        rgid = getgid ();
>  @@ -223,7 +228,7 @@ of a different user"));
>      }
>    else if (just_group_list)
>      {
>  -      if (!print_group_list (argv[optind], ruid, rgid, egid, use_name))
>  +      if (!print_group_list (user_name, ruid, rgid, egid, use_name))
>         ok = false;
>      }
>    else if (just_context)
>  @@ -232,7 +237,7 @@ of a different user"));
>      }
>    else
>      {
>  -      print_full_info (argv[optind]);
>  +      print_full_info (user_name);
>      }
>    putchar ('\n');
>
>  --
>  1.5.4.3.432.g4eb06
>



-- 
Cheers Dietger

----
www.cern.ch/ribalba  /  www.ribalba.de
Email / Jabber: address@hidden
Phone (Work) : +41 22 7679376
Skype : ribalba
Address : CERN / IT-FIO-FS / GENEVE 23/ SCHWEIZ




reply via email to

[Prev in Thread] Current Thread [Next in Thread]