From 8ac5a76a99e51a91eac9cecbe941fc05ddf11e03 Mon Sep 17 00:00:00 2001 From: Joseph Myers Date: Wed, 17 Dec 2014 18:09:11 +0000 Subject: Fix resolver inet_* namespace (bug 17722). Parts of the resolver brought in by pthreads (at least) use inet_* functions that aren't in the 1995/6 edition of POSIX that introduced pthreads (or in one case, use __inet_aton which is then defined in the same file as non-weak inet_addr). This patch fixes this by making the affected functions into weak alias for __inet_* and using those names in the problematic resolver code. Tested for x86_64 (testsuite, and that disassembly of installed shared libraries is unchanged by the patch). [BZ #17722] * inet/inet_mkadr.c (inet_makeaddr): Rename to __inet_makeaddr and define as weak alias of __inet_makeaddr. * resolv/inet_addr.c (inet_addr): Rename to __inet_addr and define as weak alias of __inet_addr. * resolv/inet_pton.c (inet_pton): Rename to __inet_pton and define as weak alias of __inet_pton. Use libc_hidden_weak. * include/arpa/inet.h (__inet_pton): Declare. Use libc_hidden_proto. (inet_makeaddr): Don't use libc_hidden_proto. (__inet_makeaddr): Declare. Use libc_hidden_proto. * resolv/res_init.c (__res_vinit): Use __inet_pton instead of inet_pton. Use __inet_makeaddr instead of inet_makeaddr. * conform/Makefile (test-xfail-POSIX/pthread.h/linknamespace): Remove variable. (test-xfail-POSIX/sched.h/linknamespace): Likewise. (test-xfail-POSIX/time.h/linknamespace): Likewise. --- inet/inet_mkadr.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'inet') diff --git a/inet/inet_mkadr.c b/inet/inet_mkadr.c index d8d92da768..580a9cd956 100644 --- a/inet/inet_mkadr.c +++ b/inet/inet_mkadr.c @@ -40,7 +40,7 @@ static char sccsid[] = "@(#)inet_makeaddr.c 8.1 (Berkeley) 6/4/93"; * building addresses stored in the ifnet structure. */ struct in_addr -inet_makeaddr(net, host) +__inet_makeaddr(net, host) in_addr_t net, host; { struct in_addr in; @@ -56,4 +56,5 @@ inet_makeaddr(net, host) in.s_addr = htonl(in.s_addr); return in; } -libc_hidden_def (inet_makeaddr) +libc_hidden_def (__inet_makeaddr) +weak_alias (__inet_makeaddr, inet_makeaddr) -- cgit 1.4.1