This is the mail archive of the glibc-cvs@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

GNU C Library master sources branch master updated. glibc-2.20-369-g9a44d53


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU C Library master sources".

The branch, master has been updated
       via  9a44d530c464d081e925b1c1af2b8bbe6e7b3207 (commit)
      from  d003ada20e8015df173c06f3292acacc7b148632 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=9a44d530c464d081e925b1c1af2b8bbe6e7b3207

commit 9a44d530c464d081e925b1c1af2b8bbe6e7b3207
Author: Joseph Myers <joseph@codesourcery.com>
Date:   Tue Dec 16 18:18:49 2014 +0000

    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.

diff --git a/ChangeLog b/ChangeLog
index 5b9a4a5..eb60f80 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,49 @@
 2014-12-16  Joseph Myers  <joseph@codesourcery.com>
 
+	[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.
+
 	* conform/Makefile (test-xfail-UNIX98/semaphore.h/linknamespace):
 	Remove variable.
 	(test-xfail-XOPEN2K/semaphore.h/linknamespace): Likewise.
diff --git a/NEWS b/NEWS
index 11121ca..4434759 100644
--- a/NEWS
+++ b/NEWS
@@ -14,7 +14,7 @@ Version 2.21
   17363, 17370, 17371, 17411, 17460, 17475, 17485, 17501, 17506, 17508,
   17522, 17555, 17570, 17571, 17572, 17573, 17574, 17581, 17582, 17583,
   17584, 17585, 17589, 17594, 17601, 17608, 17616, 17625, 17630, 17633,
-  17634, 17647, 17653, 17657, 17664, 17665, 17668, 17682.
+  17634, 17647, 17653, 17657, 17664, 17665, 17668, 17682, 17717.
 
 * CVE-2104-7817 The wordexp function could ignore the WRDE_NOCMD flag
   under certain input conditions resulting in the execution of a shell for
diff --git a/conform/Makefile b/conform/Makefile
index 1933565..e0412de 100644
--- a/conform/Makefile
+++ b/conform/Makefile
@@ -359,10 +359,8 @@ test-xfail-XPG4/ctype.h/linknamespace = yes
 test-xfail-XPG4/fmtmsg.h/linknamespace = yes
 test-xfail-XPG4/fnmatch.h/linknamespace = yes
 test-xfail-XPG4/glob.h/linknamespace = yes
-test-xfail-XPG4/grp.h/linknamespace = yes
 test-xfail-XPG4/libgen.h/linknamespace = yes
 test-xfail-XPG4/netdb.h/linknamespace = yes
-test-xfail-XPG4/pwd.h/linknamespace = yes
 test-xfail-XPG4/regex.h/linknamespace = yes
 test-xfail-XPG4/search.h/linknamespace = yes
 test-xfail-XPG4/stdio.h/linknamespace = yes
@@ -381,24 +379,18 @@ test-xfail-POSIX/semaphore.h/linknamespace = yes
 test-xfail-POSIX/time.h/linknamespace = yes
 test-xfail-POSIX/unistd.h/linknamespace = yes
 test-xfail-POSIX/wordexp.h/linknamespace = yes
-test-xfail-UNIX98/aio.h/linknamespace = yes
 test-xfail-UNIX98/ctype.h/linknamespace = yes
 test-xfail-UNIX98/fmtmsg.h/linknamespace = yes
 test-xfail-UNIX98/fnmatch.h/linknamespace = yes
 test-xfail-UNIX98/glob.h/linknamespace = yes
-test-xfail-UNIX98/grp.h/linknamespace = yes
 test-xfail-UNIX98/libgen.h/linknamespace = yes
 test-xfail-UNIX98/mqueue.h/linknamespace = yes
 test-xfail-UNIX98/netdb.h/linknamespace = yes
-test-xfail-UNIX98/pthread.h/linknamespace = yes
-test-xfail-UNIX98/pwd.h/linknamespace = yes
 test-xfail-UNIX98/regex.h/linknamespace = yes
-test-xfail-UNIX98/sched.h/linknamespace = yes
 test-xfail-UNIX98/search.h/linknamespace = yes
 test-xfail-UNIX98/stdio.h/linknamespace = yes
 test-xfail-UNIX98/stdlib.h/linknamespace = yes
 test-xfail-UNIX98/syslog.h/linknamespace = yes
-test-xfail-UNIX98/time.h/linknamespace = yes
 test-xfail-UNIX98/unistd.h/linknamespace = yes
 test-xfail-UNIX98/wchar.h/linknamespace = yes
 test-xfail-UNIX98/wordexp.h/linknamespace = yes
diff --git a/include/net/if.h b/include/net/if.h
index 1d86226..6c4cbc9 100644
--- a/include/net/if.h
+++ b/include/net/if.h
@@ -4,9 +4,13 @@
 
 #ifndef _ISOMAC
 libc_hidden_proto (if_nametoindex)
+extern __typeof (if_nametoindex) __if_nametoindex;
+libc_hidden_proto (__if_nametoindex)
 libc_hidden_proto (if_indextoname)
 libc_hidden_proto (if_nameindex)
 libc_hidden_proto (if_freenameindex)
+extern __typeof (if_freenameindex) __if_freenameindex;
+libc_hidden_proto (__if_freenameindex)
 #endif
 
 #endif
diff --git a/inet/if_index.c b/inet/if_index.c
index 98b01d1..8b30d01 100644
--- a/inet/if_index.c
+++ b/inet/if_index.c
@@ -20,35 +20,40 @@
 #include <stddef.h>
 
 unsigned int
-if_nametoindex (const char *ifname)
+__if_nametoindex (const char *ifname)
 {
   __set_errno (ENOSYS);
   return 0;
 }
-libc_hidden_def (if_nametoindex)
+libc_hidden_def (__if_nametoindex)
+weak_alias (__if_nametoindex, if_nametoindex)
+libc_hidden_weak (if_nametoindex)
 stub_warning (if_nametoindex)
 
 char *
-if_indextoname (unsigned int ifindex, char *ifname)
+__if_indextoname (unsigned int ifindex, char *ifname)
 {
   __set_errno (ENOSYS);
   return NULL;
 }
-libc_hidden_def (if_indextoname)
+weak_alias (__if_indextoname, if_indextoname)
+libc_hidden_weak (if_indextoname)
 stub_warning (if_indextoname)
 
 void
-if_freenameindex (struct if_nameindex *ifn)
+__if_freenameindex (struct if_nameindex *ifn)
 {
 }
+weak_alias (__if_freenameindex, if_freenameindex)
 stub_warning (if_freenameindex)
 
 struct if_nameindex *
-if_nameindex (void)
+__if_nameindex (void)
 {
   __set_errno (ENOSYS);
   return NULL;
 }
+weak_alias (__if_nameindex, if_nameindex)
 stub_warning (if_nameindex)
 
 #if 0
diff --git a/resolv/res_init.c b/resolv/res_init.c
index 90760ec..6eddcdd 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;
 				    }
diff --git a/sysdeps/mach/hurd/if_index.c b/sysdeps/mach/hurd/if_index.c
index 9d0ca62..11d2114 100644
--- a/sysdeps/mach/hurd/if_index.c
+++ b/sysdeps/mach/hurd/if_index.c
@@ -29,7 +29,7 @@
 /* Return the interface index corresponding to interface IFNAME.
    On error, return 0.  */
 unsigned int
-if_nametoindex (const char *ifname)
+__if_nametoindex (const char *ifname)
 {
   struct ifreq ifr;
   int fd = __opensock ();
@@ -49,11 +49,13 @@ if_nametoindex (const char *ifname)
   __close (fd);
   return ifr.ifr_ifindex;
 }
-libc_hidden_def (if_nametoindex)
+libc_hidden_def (__if_nametoindex)
+weak_alias (__if_nametoindex, if_nametoindex)
+libc_hidden_weak (if_nametoindex)
 
 /* Free the structure IFN returned by if_nameindex.  */
 void
-if_freenameindex (struct if_nameindex *ifn)
+__if_freenameindex (struct if_nameindex *ifn)
 {
   struct if_nameindex *ptr = ifn;
   while (ptr->if_name || ptr->if_index)
@@ -63,12 +65,13 @@ if_freenameindex (struct if_nameindex *ifn)
     }
   free (ifn);
 }
+weak_alias (__if_freenameindex, if_freenameindex)
 
 /* Return an array of if_nameindex structures, one for each network
    interface present, plus one indicating the end of the array.  On
    error, return NULL.  */
 struct if_nameindex *
-if_nameindex (void)
+__if_nameindex (void)
 {
   error_t err = 0;
   char data[2048];
@@ -148,12 +151,13 @@ if_nameindex (void)
   __set_errno (err);
   return idx;
 }
+weak_alias (__if_nameindex, if_nameindex)
 
 /* Store the name of the interface corresponding to index IFINDEX in
    IFNAME (which has space for at least IFNAMSIZ characters).  Return
    IFNAME, or NULL on error.  */
 char *
-if_indextoname (unsigned int ifindex, char *ifname)
+__if_indextoname (unsigned int ifindex, char *ifname)
 {
   struct ifreq ifr;
   int fd = __opensock ();
@@ -175,7 +179,8 @@ if_indextoname (unsigned int ifindex, char *ifname)
   __close (fd);
   return strncpy (ifname, ifr.ifr_name, IFNAMSIZ);
 }
-libc_hidden_def (if_indextoname)
+weak_alias (__if_indextoname, if_indextoname)
+libc_hidden_weak (if_indextoname)
 
 #if 0
 void
diff --git a/sysdeps/unix/sysv/linux/if_index.c b/sysdeps/unix/sysv/linux/if_index.c
index 0fac763..b0644f2 100644
--- a/sysdeps/unix/sysv/linux/if_index.c
+++ b/sysdeps/unix/sysv/linux/if_index.c
@@ -31,7 +31,7 @@
 
 
 unsigned int
-if_nametoindex (const char *ifname)
+__if_nametoindex (const char *ifname)
 {
 #ifndef SIOCGIFINDEX
   __set_errno (ENOSYS);
@@ -56,11 +56,13 @@ if_nametoindex (const char *ifname)
   return ifr.ifr_ifindex;
 #endif
 }
-libc_hidden_def (if_nametoindex)
+libc_hidden_def (__if_nametoindex)
+weak_alias (__if_nametoindex, if_nametoindex)
+libc_hidden_weak (if_nametoindex)
 
 
 void
-if_freenameindex (struct if_nameindex *ifn)
+__if_freenameindex (struct if_nameindex *ifn)
 {
   struct if_nameindex *ptr = ifn;
   while (ptr->if_name || ptr->if_index)
@@ -70,7 +72,9 @@ if_freenameindex (struct if_nameindex *ifn)
     }
   free (ifn);
 }
-libc_hidden_def (if_freenameindex)
+libc_hidden_def (__if_freenameindex)
+weak_alias (__if_freenameindex, if_freenameindex)
+libc_hidden_weak (if_freenameindex)
 
 
 static struct if_nameindex *
@@ -162,7 +166,7 @@ if_nameindex_netlink (void)
 		      if (idx[nifs].if_name == NULL)
 			{
 			  idx[nifs].if_index = 0;
-			  if_freenameindex (idx);
+			  __if_freenameindex (idx);
 			  idx = NULL;
 			  goto nomem;
 			}
@@ -189,7 +193,7 @@ if_nameindex_netlink (void)
 
 
 struct if_nameindex *
-if_nameindex (void)
+__if_nameindex (void)
 {
 #ifndef SIOCGIFINDEX
   __set_errno (ENOSYS);
@@ -199,11 +203,12 @@ if_nameindex (void)
   return result;
 #endif
 }
-libc_hidden_def (if_nameindex)
+weak_alias (__if_nameindex, if_nameindex)
+libc_hidden_weak (if_nameindex)
 
 
 char *
-if_indextoname (unsigned int ifindex, char *ifname)
+__if_indextoname (unsigned int ifindex, char *ifname)
 {
   /* We may be able to do the conversion directly, rather than searching a
      list.  This ioctl is not present in kernels before version 2.1.50.  */
@@ -232,4 +237,5 @@ if_indextoname (unsigned int ifindex, char *ifname)
   else
     return strncpy (ifname, ifr.ifr_name, IFNAMSIZ);
 }
-libc_hidden_def (if_indextoname)
+weak_alias (__if_indextoname, if_indextoname)
+libc_hidden_weak (if_indextoname)

-----------------------------------------------------------------------

Summary of changes:
 ChangeLog                          |   44 ++++++++++++++++++++++++++++++++++++
 NEWS                               |    2 +-
 conform/Makefile                   |    8 ------
 include/net/if.h                   |    4 +++
 inet/if_index.c                    |   17 +++++++++-----
 resolv/res_init.c                  |    2 +-
 sysdeps/mach/hurd/if_index.c       |   17 +++++++++-----
 sysdeps/unix/sysv/linux/if_index.c |   24 ++++++++++++-------
 8 files changed, 87 insertions(+), 31 deletions(-)


hooks/post-receive
-- 
GNU C Library master sources


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]