Fix getifaddrs, freeifaddrs namespace (bug 17668).
Various objects in glibc bring in ifaddrs.o (via references to __netlink_*) and thereby getifaddrs and freeifaddrs, which are not part of any standard supported by glibc. These should be weak aliases of __getifaddrs and __freeifaddrs; this patch makes them so. (The path by which these functions are brought in is Linux-specific, but it seems less confusing to make all versions of these functions weak aliases rather than only the Linux-specific versions that definitely need it.) Tested for x86_64 (testsuite, and that disassembly of installed shared libraries is unchanged by this patch). [BZ #17668] * inet/ifaddrs.c (getifaddrs): Rename to __getifaddrs and define as weak alias of __getifaddrs. Use libc_hidden_weak. (freeifaddrs): Rename to __freeifaddrs and define as weak alias of __freeifaddrs. Use libc_hidden_weak. * sysdeps/gnu/ifaddrs.c (getifaddrs): Rename to __getifaddrs and define as weak alias of __getifaddrs. Use libc_hidden_weak. (freeifaddrs): Rename to __freeifaddrs and define as weak alias of __freeifaddrs. Use libc_hidden_weak. * sysdeps/unix/sysv/linux/ifaddrs.c (getifaddrs): Rename to __getifaddrs and define as weak alias of __getifaddrs. Use libc_hidden_weak. (freeifaddrs): Rename to __freeifaddrs and define as weak alias of __freeifaddrs. Use libc_hidden_weak. * conform/Makefile (test-xfail-XOPEN2K/net/if.h/linknamespace): Remove variable. (test-xfail-POSIX2008/net/if.h/linknamespace): Likewise. (test-xfail-XOPEN2K8/net/if.h/linknamespace): Likewise.
This commit is contained in:
parent
bbe4c142b0
commit
7f994279e9
21
ChangeLog
21
ChangeLog
@ -1,3 +1,24 @@
|
|||||||
|
2014-12-02 Joseph Myers <joseph@codesourcery.com>
|
||||||
|
|
||||||
|
[BZ #17668]
|
||||||
|
* inet/ifaddrs.c (getifaddrs): Rename to __getifaddrs and define
|
||||||
|
as weak alias of __getifaddrs. Use libc_hidden_weak.
|
||||||
|
(freeifaddrs): Rename to __freeifaddrs and define as weak alias of
|
||||||
|
__freeifaddrs. Use libc_hidden_weak.
|
||||||
|
* sysdeps/gnu/ifaddrs.c (getifaddrs): Rename to __getifaddrs and
|
||||||
|
define as weak alias of __getifaddrs. Use libc_hidden_weak.
|
||||||
|
(freeifaddrs): Rename to __freeifaddrs and define as weak alias of
|
||||||
|
__freeifaddrs. Use libc_hidden_weak.
|
||||||
|
* sysdeps/unix/sysv/linux/ifaddrs.c (getifaddrs): Rename to
|
||||||
|
__getifaddrs and define as weak alias of __getifaddrs. Use
|
||||||
|
libc_hidden_weak.
|
||||||
|
(freeifaddrs): Rename to __freeifaddrs and define as weak alias of
|
||||||
|
__freeifaddrs. Use libc_hidden_weak.
|
||||||
|
* conform/Makefile (test-xfail-XOPEN2K/net/if.h/linknamespace):
|
||||||
|
Remove variable.
|
||||||
|
(test-xfail-POSIX2008/net/if.h/linknamespace): Likewise.
|
||||||
|
(test-xfail-XOPEN2K8/net/if.h/linknamespace): Likewise.
|
||||||
|
|
||||||
2014-12-02 Petar Jovanovic <petar.jovanovic@rt-rk.com>
|
2014-12-02 Petar Jovanovic <petar.jovanovic@rt-rk.com>
|
||||||
|
|
||||||
[BZ #17601]
|
[BZ #17601]
|
||||||
|
2
NEWS
2
NEWS
@ -13,7 +13,7 @@ Version 2.21
|
|||||||
16619, 16740, 16857, 17192, 17266, 17344, 17363, 17370, 17371, 17411,
|
16619, 16740, 16857, 17192, 17266, 17344, 17363, 17370, 17371, 17411,
|
||||||
17460, 17475, 17485, 17501, 17506, 17508, 17522, 17555, 17570, 17571,
|
17460, 17475, 17485, 17501, 17506, 17508, 17522, 17555, 17570, 17571,
|
||||||
17572, 17573, 17574, 17581, 17582, 17583, 17584, 17585, 17589, 17594,
|
17572, 17573, 17574, 17581, 17582, 17583, 17584, 17585, 17589, 17594,
|
||||||
17601, 17608, 17616, 17625, 17633, 17664, 17665.
|
17601, 17608, 17616, 17625, 17633, 17664, 17665, 17668.
|
||||||
|
|
||||||
* CVE-2104-7817 The wordexp function could ignore the WRDE_NOCMD flag
|
* CVE-2104-7817 The wordexp function could ignore the WRDE_NOCMD flag
|
||||||
under certain input conditions resulting in the execution of a shell for
|
under certain input conditions resulting in the execution of a shell for
|
||||||
|
@ -414,7 +414,6 @@ test-xfail-XOPEN2K/glob.h/linknamespace = yes
|
|||||||
test-xfail-XOPEN2K/grp.h/linknamespace = yes
|
test-xfail-XOPEN2K/grp.h/linknamespace = yes
|
||||||
test-xfail-XOPEN2K/libgen.h/linknamespace = yes
|
test-xfail-XOPEN2K/libgen.h/linknamespace = yes
|
||||||
test-xfail-XOPEN2K/mqueue.h/linknamespace = yes
|
test-xfail-XOPEN2K/mqueue.h/linknamespace = yes
|
||||||
test-xfail-XOPEN2K/net/if.h/linknamespace = yes
|
|
||||||
test-xfail-XOPEN2K/netdb.h/linknamespace = yes
|
test-xfail-XOPEN2K/netdb.h/linknamespace = yes
|
||||||
test-xfail-XOPEN2K/pthread.h/linknamespace = yes
|
test-xfail-XOPEN2K/pthread.h/linknamespace = yes
|
||||||
test-xfail-XOPEN2K/pwd.h/linknamespace = yes
|
test-xfail-XOPEN2K/pwd.h/linknamespace = yes
|
||||||
@ -436,7 +435,6 @@ test-xfail-POSIX2008/dirent.h/linknamespace = yes
|
|||||||
test-xfail-POSIX2008/fcntl.h/linknamespace = yes
|
test-xfail-POSIX2008/fcntl.h/linknamespace = yes
|
||||||
test-xfail-POSIX2008/grp.h/linknamespace = yes
|
test-xfail-POSIX2008/grp.h/linknamespace = yes
|
||||||
test-xfail-POSIX2008/mqueue.h/linknamespace = yes
|
test-xfail-POSIX2008/mqueue.h/linknamespace = yes
|
||||||
test-xfail-POSIX2008/net/if.h/linknamespace = yes
|
|
||||||
test-xfail-POSIX2008/netdb.h/linknamespace = yes
|
test-xfail-POSIX2008/netdb.h/linknamespace = yes
|
||||||
test-xfail-POSIX2008/pthread.h/linknamespace = yes
|
test-xfail-POSIX2008/pthread.h/linknamespace = yes
|
||||||
test-xfail-POSIX2008/regex.h/linknamespace = yes
|
test-xfail-POSIX2008/regex.h/linknamespace = yes
|
||||||
@ -451,7 +449,6 @@ test-xfail-XOPEN2K8/fmtmsg.h/linknamespace = yes
|
|||||||
test-xfail-XOPEN2K8/grp.h/linknamespace = yes
|
test-xfail-XOPEN2K8/grp.h/linknamespace = yes
|
||||||
test-xfail-XOPEN2K8/libgen.h/linknamespace = yes
|
test-xfail-XOPEN2K8/libgen.h/linknamespace = yes
|
||||||
test-xfail-XOPEN2K8/mqueue.h/linknamespace = yes
|
test-xfail-XOPEN2K8/mqueue.h/linknamespace = yes
|
||||||
test-xfail-XOPEN2K8/net/if.h/linknamespace = yes
|
|
||||||
test-xfail-XOPEN2K8/netdb.h/linknamespace = yes
|
test-xfail-XOPEN2K8/netdb.h/linknamespace = yes
|
||||||
test-xfail-XOPEN2K8/pthread.h/linknamespace = yes
|
test-xfail-XOPEN2K8/pthread.h/linknamespace = yes
|
||||||
test-xfail-XOPEN2K8/pwd.h/linknamespace = yes
|
test-xfail-XOPEN2K8/pwd.h/linknamespace = yes
|
||||||
|
@ -24,16 +24,17 @@
|
|||||||
network interface on the host machine. If successful, store the
|
network interface on the host machine. If successful, store the
|
||||||
list in *IFAP and return 0. On errors, return -1 and set `errno'. */
|
list in *IFAP and return 0. On errors, return -1 and set `errno'. */
|
||||||
int
|
int
|
||||||
getifaddrs (struct ifaddrs **ifap)
|
__getifaddrs (struct ifaddrs **ifap)
|
||||||
{
|
{
|
||||||
__set_errno (ENOSYS);
|
__set_errno (ENOSYS);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
libc_hidden_def (getifaddrs)
|
weak_alias (__getifaddrs, getifaddrs)
|
||||||
|
libc_hidden_weak (getifaddrs)
|
||||||
stub_warning (getifaddrs)
|
stub_warning (getifaddrs)
|
||||||
|
|
||||||
void
|
void
|
||||||
freeifaddrs (struct ifaddrs *ifa)
|
__freeifaddrs (struct ifaddrs *ifa)
|
||||||
{
|
{
|
||||||
if (ifa == NULL)
|
if (ifa == NULL)
|
||||||
return; /* a la free, why not? */
|
return; /* a la free, why not? */
|
||||||
@ -41,5 +42,6 @@ freeifaddrs (struct ifaddrs *ifa)
|
|||||||
/* Can't be called properly if getifaddrs never succeeded. */
|
/* Can't be called properly if getifaddrs never succeeded. */
|
||||||
abort ();
|
abort ();
|
||||||
}
|
}
|
||||||
libc_hidden_def (freeifaddrs)
|
weak_alias (__freeifaddrs, freeifaddrs)
|
||||||
|
libc_hidden_weak (freeifaddrs)
|
||||||
stub_warning (freeifaddrs)
|
stub_warning (freeifaddrs)
|
||||||
|
@ -32,7 +32,7 @@
|
|||||||
network interface on the host machine. If successful, store the
|
network interface on the host machine. If successful, store the
|
||||||
list in *IFAP and return 0. On errors, return -1 and set `errno'. */
|
list in *IFAP and return 0. On errors, return -1 and set `errno'. */
|
||||||
int
|
int
|
||||||
getifaddrs (struct ifaddrs **ifap)
|
__getifaddrs (struct ifaddrs **ifap)
|
||||||
{
|
{
|
||||||
/* This implementation handles only IPv4 interfaces.
|
/* This implementation handles only IPv4 interfaces.
|
||||||
The various ioctls below will only work on an AF_INET socket.
|
The various ioctls below will only work on an AF_INET socket.
|
||||||
@ -150,13 +150,15 @@ getifaddrs (struct ifaddrs **ifap)
|
|||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
weak_alias (__getifaddrs, getifaddrs)
|
||||||
#ifndef getifaddrs
|
#ifndef getifaddrs
|
||||||
libc_hidden_def (getifaddrs)
|
libc_hidden_weak (getifaddrs)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void
|
void
|
||||||
freeifaddrs (struct ifaddrs *ifa)
|
__freeifaddrs (struct ifaddrs *ifa)
|
||||||
{
|
{
|
||||||
free (ifa);
|
free (ifa);
|
||||||
}
|
}
|
||||||
libc_hidden_def (freeifaddrs)
|
weak_alias (__freeifaddrs, freeifaddrs)
|
||||||
|
libc_hidden_weak (freeifaddrs)
|
||||||
|
@ -819,7 +819,7 @@ getifaddrs_internal (struct ifaddrs **ifap)
|
|||||||
network interface on the host machine. If successful, store the
|
network interface on the host machine. If successful, store the
|
||||||
list in *IFAP and return 0. On errors, return -1 and set `errno'. */
|
list in *IFAP and return 0. On errors, return -1 and set `errno'. */
|
||||||
int
|
int
|
||||||
getifaddrs (struct ifaddrs **ifap)
|
__getifaddrs (struct ifaddrs **ifap)
|
||||||
{
|
{
|
||||||
int res;
|
int res;
|
||||||
|
|
||||||
@ -829,12 +829,14 @@ getifaddrs (struct ifaddrs **ifap)
|
|||||||
|
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
libc_hidden_def (getifaddrs)
|
weak_alias (__getifaddrs, getifaddrs)
|
||||||
|
libc_hidden_weak (getifaddrs)
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
freeifaddrs (struct ifaddrs *ifa)
|
__freeifaddrs (struct ifaddrs *ifa)
|
||||||
{
|
{
|
||||||
free (ifa);
|
free (ifa);
|
||||||
}
|
}
|
||||||
libc_hidden_def (freeifaddrs)
|
weak_alias (__freeifaddrs, freeifaddrs)
|
||||||
|
libc_hidden_weak (freeifaddrs)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user