about summary refs log tree commit diff
diff options
context:
space:
mode:
authorSamuel Thibault <samuel.thibault@ens-lyon.org>2017-09-28 00:19:18 +0200
committerSamuel Thibault <samuel.thibault@ens-lyon.org>2017-09-28 01:05:18 +0200
commit4009ddc69225d571772aaea597615a0c032e14ab (patch)
tree5b82cda9a1e05c472d5f008437117588cbaca6bb
parent64a4af28a62e9f305c82bc9649bbe065fffdeb0d (diff)
downloadglibc-4009ddc69225d571772aaea597615a0c032e14ab.tar.gz
glibc-4009ddc69225d571772aaea597615a0c032e14ab.tar.xz
glibc-4009ddc69225d571772aaea597615a0c032e14ab.zip
hurd: Fix `getifaddrs' and `freeifaddrs' symbol exposition
from `freeaddrinfo'.

`getifaddrs' and `freeifaddrs' are not in POSIX, they should not be
exposed along `freeaddrinfo' (through `__check_pf') which is POSIX.

	* include/ifaddrs.h (__getifaddrs, __freeifaddrs): New declarations,
	and use libc_hidden_def on them.
	* inet/ifaddrs.c (__getifaddrs, __freeifaddrs): Use libc_hidden_def on
	them.
	* sysdeps/gnu/ifaddrs.c (__getifaddrs, __freeifaddrs): Likewise.
	* inet/check_pf.c (__check_pf): Use __getifaddrs and __freeifaddrs
	instead of getifaddrs and freeifaddrs.
-rw-r--r--ChangeLog7
-rw-r--r--include/ifaddrs.h5
-rw-r--r--inet/check_pf.c4
-rw-r--r--inet/ifaddrs.c2
-rw-r--r--sysdeps/gnu/ifaddrs.c2
5 files changed, 18 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index 737dc8f808..8e26c003a8 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -17,6 +17,13 @@
 	redefine as weak alias.
 	* sysdeps/mach/hurd/rewinddir.c (__rewinddir): Use __seekdir instead
 	of seekdir.
+	* include/ifaddrs.h (__getifaddrs, __freeifaddrs): New declarations,
+	and use libc_hidden_def on them.
+	* inet/ifaddrs.c (__getifaddrs, __freeifaddrs): Use libc_hidden_def on
+	them.
+	* sysdeps/gnu/ifaddrs.c (__getifaddrs, __freeifaddrs): Likewise.
+	* inet/check_pf.c (__check_pf): Use __getifaddrs and __freeifaddrs
+	instead of getifaddrs and freeifaddrs.
 
 2017-09-26  H.J. Lu  <hongjiu.lu@intel.com>
 
diff --git a/include/ifaddrs.h b/include/ifaddrs.h
index 54f4b7a3ce..416118f1b3 100644
--- a/include/ifaddrs.h
+++ b/include/ifaddrs.h
@@ -9,6 +9,11 @@
 libc_hidden_proto (getifaddrs)
 libc_hidden_proto (freeifaddrs)
 
+extern int __getifaddrs (struct ifaddrs **__ifap);
+libc_hidden_proto (__getifaddrs)
+extern void __freeifaddrs (struct ifaddrs *__ifa);
+libc_hidden_proto (__freeifaddrs)
+
 struct in6addrinfo
 {
   enum {
diff --git a/inet/check_pf.c b/inet/check_pf.c
index a56723a7df..84dd1699d5 100644
--- a/inet/check_pf.c
+++ b/inet/check_pf.c
@@ -32,7 +32,7 @@ __check_pf (bool *seen_ipv4, bool *seen_ipv6,
 
   /* Get the interface list via getifaddrs.  */
   struct ifaddrs *ifa = NULL;
-  if (getifaddrs (&ifa) != 0)
+  if (__getifaddrs (&ifa) != 0)
     {
       /* We cannot determine what interfaces are available.  Be
 	 pessimistic.  */
@@ -51,7 +51,7 @@ __check_pf (bool *seen_ipv4, bool *seen_ipv6,
     else if (runp->ifa_addr->sa_family == PF_INET6)
       *seen_ipv6 = true;
 
-  (void) freeifaddrs (ifa);
+  (void) __freeifaddrs (ifa);
 }
 
 
diff --git a/inet/ifaddrs.c b/inet/ifaddrs.c
index 35cc277225..0a5c71c059 100644
--- a/inet/ifaddrs.c
+++ b/inet/ifaddrs.c
@@ -30,6 +30,7 @@ __getifaddrs (struct ifaddrs **ifap)
   return -1;
 }
 weak_alias (__getifaddrs, getifaddrs)
+libc_hidden_def (__getifaddrs)
 libc_hidden_weak (getifaddrs)
 stub_warning (getifaddrs)
 
@@ -43,5 +44,6 @@ __freeifaddrs (struct ifaddrs *ifa)
   abort ();
 }
 weak_alias (__freeifaddrs, freeifaddrs)
+libc_hidden_def (__freeifaddrs)
 libc_hidden_weak (freeifaddrs)
 stub_warning (freeifaddrs)
diff --git a/sysdeps/gnu/ifaddrs.c b/sysdeps/gnu/ifaddrs.c
index 37b3248669..80702eb1d1 100644
--- a/sysdeps/gnu/ifaddrs.c
+++ b/sysdeps/gnu/ifaddrs.c
@@ -151,6 +151,7 @@ __getifaddrs (struct ifaddrs **ifap)
   return 0;
 }
 weak_alias (__getifaddrs, getifaddrs)
+libc_hidden_def (__getifaddrs)
 #ifndef getifaddrs
 libc_hidden_weak (getifaddrs)
 #endif
@@ -161,4 +162,5 @@ __freeifaddrs (struct ifaddrs *ifa)
   free (ifa);
 }
 weak_alias (__freeifaddrs, freeifaddrs)
+libc_hidden_def (__freeifaddrs)
 libc_hidden_weak (freeifaddrs)