diff options
author | Joseph Myers <joseph@codesourcery.com> | 2014-12-16 18:18:49 +0000 |
---|---|---|
committer | Joseph Myers <joseph@codesourcery.com> | 2014-12-16 18:18:49 +0000 |
commit | 9a44d530c464d081e925b1c1af2b8bbe6e7b3207 (patch) | |
tree | a426306b1967ad948ba3a7351f87fa177aba019a /resolv/res_init.c | |
parent | d003ada20e8015df173c06f3292acacc7b148632 (diff) | |
download | glibc-9a44d530c464d081e925b1c1af2b8bbe6e7b3207.tar.gz glibc-9a44d530c464d081e925b1c1af2b8bbe6e7b3207.tar.xz glibc-9a44d530c464d081e925b1c1af2b8bbe6e7b3207.zip |
Fix resolver if_* namespace (bug 17717).
Resolver code, brought in by pthreads (at least), uses if_* interfaces that weren't in POSIX before 2001, resulting in linknamespace failures. This patch changes those interfaces to be weak aliases of __if_* and makes the resolver use __if_* directly. Tested for x86_64 (testsuite, and that disassembly of installed shared libraries is unchanged by this patch). [BZ #17717] * inet/if_index.c (if_nametoindex): Rename to __if_nametoindex and define as weak alias of __if_nametoindex. Use libc_hidden_weak. (if_indextoname): Rename to __if_indextoname and define as weak alias of __if_indextoname. Use libc_hidden_weak. (if_freenameindex): Rename to __if_freenameindex and define as weak alias of __if_freenameindex. (if_nameindex): Rename to __if_nameindex and define as weak alias of __if_nameindex. * sysdeps/mach/hurd/if_index.c (if_nametoindex): Rename to __if_nametoindex and define as weak alias of __if_nametoindex. Use libc_hidden_weak. (if_freenameindex): Rename to __if_freenameindex and define as weak alias of __if_freenameindex. (if_nameindex): Rename to __if_nameindex and define as weak alias of __if_nameindex. (if_indextoname): Rename to __if_indextoname and define as weak alias of __if_indextoname. Use libc_hidden_weak. * sysdeps/unix/sysv/linux/if_index.c (if_nametoindex): Rename to __if_nametoindex and define as weak alias of __if_nametoindex. Use libc_hidden_weak. (if_freenameindex): Rename to __if_freenameindex and define as weak alias of __if_freenameindex. Use libc_hidden_weak. (if_nameindex_netlink): Use __if_freenameindex instead of if_freenameindex. (if_nameindex): Rename to __if_nameindex and define as weak alias of __if_nameindex. Use libc_hidden_weak. (if_indextoname): Rename to __if_indextoname and define as weak alias of __if_indextoname. Use libc_hidden_weak. * include/net/if.h [!_ISOMAC] (__if_nametoindex): Declare and use libc_hidden_proto. [!_ISOMAC] (__if_freenameindex): Likewise. * resolv/res_init.c (__res_vinit): Use __if_nametoindex instead of if_nametoindex. * conform/Makefile (test-xfail-XPG4/grp.h/linknamespace): Remove variable. (test-xfail-XPG4/pwd.h/linknamespace): Likewise. (test-xfail-UNIX98/aio.h/linknamespace): Likewise. (test-xfail-UNIX98/grp.h/linknamespace): Likewise. (test-xfail-UNIX98/pthread.h/linknamespace): Likewise. (test-xfail-UNIX98/pwd.h/linknamespace): Likewise. (test-xfail-UNIX98/sched.h/linknamespace): Likewise. (test-xfail-UNIX98/time.h/linknamespace): Likewise.
Diffstat (limited to 'resolv/res_init.c')
-rw-r--r-- | resolv/res_init.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/resolv/res_init.c b/resolv/res_init.c index 90760ec8e6..6eddcdd0b2 100644 --- a/resolv/res_init.c +++ b/resolv/res_init.c @@ -341,7 +341,7 @@ __res_vinit(res_state statp, int preinit) { if (IN6_IS_ADDR_LINKLOCAL (&a6) || IN6_IS_ADDR_MC_LINKLOCAL (&a6)) { sa6->sin6_scope_id - = if_nametoindex (el + 1); + = __if_nametoindex (el + 1); if (sa6->sin6_scope_id != 0) try_numericscope = 0; } |