diff options
author | Joseph Myers <joseph@codesourcery.com> | 2015-06-17 20:21:19 +0000 |
---|---|---|
committer | Joseph Myers <joseph@codesourcery.com> | 2015-06-17 20:21:19 +0000 |
commit | abccad04b4172d552dbdae948c0e567ba266ad76 (patch) | |
tree | 2de82b0b360a2a1003e1fe0e92c00fef92e8d79f /misc/ttyslot.c | |
parent | 0595c98494c25f8eaa1a3298e8fa032ad5e4405e (diff) | |
download | glibc-abccad04b4172d552dbdae948c0e567ba266ad76.tar.gz glibc-abccad04b4172d552dbdae948c0e567ba266ad76.tar.xz glibc-abccad04b4172d552dbdae948c0e567ba266ad76.zip |
Fix ttyslot namespace (bug 18547).
ttyslot (XPG4) calls the non-XPG4 functions endttyent, getttyent and setttyent, which in turn bring in references to fgets_unlocked and getttynam. This patch fixes this by making these functions into weak aliases and calling the __* names as needed. Tested for x86_64 and x86 (testsuite, and that disassembly of installed stripped shared libraries is unchanged by the patch). [BZ #18547] * misc/getttyent.c (getttynam): Rename to __getttynam and define as weak alias of __getttynam. Use prototype function definition. Call __setttyent, __getttyent and __endttyent instead of setttyent, getttyent and endttyent. (getttyent): Rename to __getttyent and define as weak alias of __getttyent. Call __setttyent instead of setttyent. Call __fgets_unlocked instead of fgets_unlocked. (setttyent): Rename to __setttyent and define as weak alias of __setttyent. (endttyent): Rename to __endttyent and define as weak alias of __endttyent. * include/ttyent.h (__getttyent): Declare. Use libc_hidden_proto. (__setttyent): Likewise. (__endttyent): Likewise. (getttyent): Don't use libc_hidden_proto. (setttyent): Likewise. (endttyent): Likewise. * misc/ttyslot.c (ttyslot): Call __setttyent, __getttyent and __endttyent instead of setttyent, getttyent and endttyent. * conform/Makefile (test-xfail-XPG4/unistd.h/linknamespace): Remove variable.
Diffstat (limited to 'misc/ttyslot.c')
-rw-r--r-- | misc/ttyslot.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/misc/ttyslot.c b/misc/ttyslot.c index 9c69589dae..0ed14d73ea 100644 --- a/misc/ttyslot.c +++ b/misc/ttyslot.c @@ -53,20 +53,20 @@ ttyslot (void) name = __alloca (buflen); - setttyent(); + __setttyent(); for (cnt = 0; cnt < 3; ++cnt) if (__ttyname_r (cnt, name, buflen) == 0) { if ((p = rindex(name, '/'))) ++p; else p = name; - for (slot = 1; (ttyp = getttyent()); ++slot) + for (slot = 1; (ttyp = __getttyent()); ++slot) if (!strcmp(ttyp->ty_name, p)) { - endttyent(); + __endttyent(); return(slot); } break; } - endttyent(); + __endttyent(); return(0); } |