1
0
mirror of https://sourceware.org/git/glibc.git synced 2025-07-29 11:41:21 +03:00

Handle zero prefix length in getifaddrs (BZ #17371)

This commit is contained in:
Andreas Schwab
2014-09-13 10:10:29 +02:00
parent 61fe374a44
commit a7b8726870
3 changed files with 11 additions and 8 deletions

View File

@ -1,3 +1,9 @@
2014-09-15 Andreas Schwab <schwab@linux-m68k.org>
[BZ #17371]
* sysdeps/unix/sysv/linux/ifaddrs.c (getifaddrs_internal): Fix
last change to handle zero prefix length.
2014-09-15 Siddhesh Poyarekar <siddhesh@redhat.com> 2014-09-15 Siddhesh Poyarekar <siddhesh@redhat.com>
* sysdeps/posix/sysconf.c (__sysconf): Return -1 for * sysdeps/posix/sysconf.c (__sysconf): Return -1 for

2
NEWS
View File

@ -9,7 +9,7 @@ Version 2.21
* The following bugs are resolved with this release: * The following bugs are resolved with this release:
17363, 17370. 17363, 17370, 17371.
Version 2.20 Version 2.20

View File

@ -770,20 +770,17 @@ getifaddrs_internal (struct ifaddrs **ifap)
if (cp != NULL) if (cp != NULL)
{ {
char c;
unsigned int preflen; unsigned int preflen;
if ((max_prefixlen > 0) && if (ifam->ifa_prefixlen > max_prefixlen)
(ifam->ifa_prefixlen > max_prefixlen))
preflen = max_prefixlen; preflen = max_prefixlen;
else else
preflen = ifam->ifa_prefixlen; preflen = ifam->ifa_prefixlen;
for (i = 0; i < ((preflen - 1) / 8); i++) for (i = 0; i < preflen / 8; i++)
*cp++ = 0xff; *cp++ = 0xff;
c = 0xff; if (preflen % 8)
c <<= ((128 - preflen) % 8); *cp = 0xff << (8 - preflen % 8);
*cp = c;
} }
} }
} }