Peter Fales <[EMAIL PROTECTED]> wrote: > Trying to build http://meyering.net/cu/coreutils-6.10.133-677610.tar.gz > and getting test failures on darwin (Mac OS/X), as "id -G" is returning > incorrect values. It seems that in id.c, we have > > 214 user_name = pwd ? pwd->pw_name : NULL; > > where user_name caches a value returned by getpwuid(). However, down > in print_group_list() at line 43, getpwuid() is called again, and it > causes the value pointed to by username to be corrupted. I've attached > a patch which appears to help. ... > diff -ur coreutils-6.10.133-677610/src/id.c > coreutils-6.10.133-677610.new/src/id.c > --- coreutils-6.10.133-677610/src/id.c 2008-03-13 18:09:44.000000000 > -0500 > +++ coreutils-6.10.133-677610.new/src/id.c 2008-03-24 11:38:14.000000000 > -0500 > @@ -211,7 +211,7 @@ > struct passwd const *pwd; > euid = geteuid (); > pwd = getpwuid (euid); > - user_name = pwd ? pwd->pw_name : NULL; > + user_name = pwd ? strdup(pwd->pw_name) : NULL;
Thanks a lot! I'm applying this patch: >From f7d1c59c224f81a8bab5fa2afcaf815988f50467 Mon Sep 17 00:00:00 2001 From: Peter Fales <[EMAIL PROTECTED]> Date: Tue, 25 Mar 2008 22:44:01 +0100 Subject: [PATCH] id bug fix: don't point to potentially clobbered static storage On at least Mac OS, when calling getpwuid twice with the same UID, the static storage containing results from the first call is invalidated by the second call. * src/id.c (main): Point to a copy of the user name string. Signed-off-by: Jim Meyering <[EMAIL PROTECTED]> --- src/id.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/src/id.c b/src/id.c index 9ee52e1..a178714 100644 --- a/src/id.c +++ b/src/id.c @@ -211,7 +211,7 @@ of a different user")); struct passwd const *pwd; euid = geteuid (); pwd = getpwuid (euid); - user_name = pwd ? pwd->pw_name : NULL; + user_name = pwd ? xstrdup (pwd->pw_name) : NULL; ruid = getuid (); egid = getegid (); rgid = getgid (); -- 1.5.5.rc0.22.g467c _______________________________________________ Bug-coreutils mailing list Bug-coreutils@gnu.org http://lists.gnu.org/mailman/listinfo/bug-coreutils