GNU bug report logs - #76876
logname output is often wrong when linked with glibc

Previous Next

Package: coreutils;

Reported by: Nicolas Boos <nicolas.boos <at> wanadoo.fr>

Date: Sat, 8 Mar 2025 23:08:03 UTC

Severity: normal

Done: Pádraig Brady <P <at> draigBrady.com>

Bug is archived. No further changes may be made.

Full log


View this message in rfc822 format

From: help-debbugs <at> gnu.org (GNU bug Tracking System)
To: Nicolas Boos <nicolas.boos <at> wanadoo.fr>
Subject: bug#76876: closed (Re: bug#76876: logname output is often wrong
 when linked with glibc)
Date: Sun, 09 Mar 2025 12:50:02 +0000
[Message part 1 (text/plain, inline)]
Your bug report

#76876: logname output is often wrong when linked with glibc

which was filed against the coreutils package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to 76876 <at> debbugs.gnu.org.

-- 
76876: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=76876
GNU Bug Tracking System
Contact help-debbugs <at> gnu.org with problems
[Message part 2 (message/rfc822, inline)]
From: Pádraig Brady <P <at> draigBrady.com>
To: Bruno Haible <bruno <at> clisp.org>, Nicolas Boos <nicolas.boos <at> wanadoo.fr>,
 bug-gnulib <at> gnu.org, Paul Eggert <eggert <at> cs.ucla.edu>
Cc: 76876-done <at> debbugs.gnu.org
Subject: Re: bug#76876: logname output is often wrong when linked with glibc
Date: Sun, 9 Mar 2025 12:48:49 +0000
On 09/03/2025 11:08, Bruno Haible via Gnulib discussion list wrote:
> I wrote:
>> With this, coreutils should be fine, since it already imports the 'getlogin'
>> module from gnulib.
> 
> Verified by comparing coreutils-9.5 with coreutils-HEAD on Alpine Linux 3.20:
> 
> With coreutils-9.5:
> 
> $ logname
> bruno
> $ su -
> Password:
> # logname
> root
> 
> Now:
> 
> $ logname
> bruno
> $ su -
> Password:
> # logname
> bruno
> 
> Paul, Pádraig: How about adding a coreutils/NEWS entry for this bug fix?

I pushed an update to coreutils NEWS mentioning the fix.
Marking this as done.

thanks!
Pádraig.

[Message part 3 (message/rfc822, inline)]
From: Nicolas Boos <nicolas.boos <at> wanadoo.fr>
To: bug-coreutils <at> gnu.org
Subject: logname output is often wrong when linked with glibc
Date: Sat, 8 Mar 2025 17:46:22 +0100
First test case with logname 9.1 and glibc 2.36:
$ echo $LOGNAME
nicolas
$ logname
nicolas
$ su --login root
$ echo $LOGNAME
root
$ logname
nicolas
$ logname (musl)
root
$ logname (uclibc)
root

Second test case, with a minimal chroot, no /proc and busybox login:
$ echo $LOGNAME
nicolas
$ logname
logname: no login name
$ busybox logname
logname: getlogin: No such file or directory
$ logname (musl)
nicolas
$ logname (uclibc)
nicolas

It seems getlogin() is malfunctioning only with glibc.

The following patch with "equivalent code" fixes the issue:
--- logname.c.orig
+++ logname.c
@@ -71,7 +71,11 @@
 
   /* POSIX requires using getlogin (or equivalent code) and prohibits
      using a fallback technique.  */
-  cp = getlogin ();
+  #if __GLIBC__
+    cp = getenv ("LOGNAME");
+  #else
+    cp = getlogin ();
+  #endif
   if (! cp)
     error (EXIT_FAILURE, 0, _("no login name"));

Adding a permanent fix to gnulib/getlogin.c code might be a better solution.

NB



This bug report was last modified 118 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.