aboutsummaryrefslogtreecommitdiff
path: root/posix
diff options
context:
space:
mode:
authorJoseph Myers <joseph@codesourcery.com>2015-06-12 20:02:30 +0000
committerJoseph Myers <joseph@codesourcery.com>2015-06-12 20:02:30 +0000
commit5371d99e8766f25864ddf20fb0866e57fc0b7991 (patch)
tree7da25c486c5cee518ba959fd05f3629a0479b253 /posix
parenta82a3db95077c8343b988a6f1b03adea3d40f6d4 (diff)
downloadglibc-5371d99e8766f25864ddf20fb0866e57fc0b7991.zip
glibc-5371d99e8766f25864ddf20fb0866e57fc0b7991.tar.gz
glibc-5371d99e8766f25864ddf20fb0866e57fc0b7991.tar.bz2
Fix getlogin_r namespace (bug 18527).
Various functions in XPG4 bring in references to getlogin_r, which is not in XPG4; this is also a bug for some older POSIX versions which aren't yet covered by the linknamespace tests. This patch fixes this by making getlogin_r into a weak alias for __getlogin_r and using __getlogin_r as needed. Tested for x86_64 and x86 (testsuite, and that disassembly of installed stripped shared libraries is unchanged by the patch). [BZ #18527] * login/getlogin_r.c (getlogin_r): Rename to __getlogin_r and define as weak alias of __getlogin_r. Use libc_hidden_weak. * sysdeps/mach/hurd/getlogin_r.c (getlogin_r): Likewise. * sysdeps/unix/getlogin_r.c (getlogin_r): Likewise. * sysdeps/unix/sysv/linux/getlogin_r.c (getlogin_r): Likewise. * include/unistd.h (__getlogin_r): Declare. Use libc_hidden_proto. * posix/glob.c (glob): Call __getlogin_r instead of getlogin_r. * conform/Makefile (test-xfail-XPG3/glob.h/linknamespace): Remove variable. (test-xfail-XPG3/wordexp.h/linknamespace): Likewise. (test-xfail-XPG4/glob.h/linknamespace): Likewise. (test-xfail-XPG4/wordexp.h/linknamespace): Likewise.
Diffstat (limited to 'posix')
-rw-r--r--posix/glob.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/posix/glob.c b/posix/glob.c
index 5b92776..d65e55d 100644
--- a/posix/glob.c
+++ b/posix/glob.c
@@ -619,7 +619,7 @@ glob (pattern, flags, errfunc, pglob)
buflen = 20;
name = alloca_account (buflen, alloca_used);
- success = getlogin_r (name, buflen) == 0;
+ success = __getlogin_r (name, buflen) == 0;
if (success)
{
struct passwd *p;