diff options
Diffstat (limited to 'glibc-2.20-getifaddrs_internal-segfault.patch')
-rw-r--r-- | glibc-2.20-getifaddrs_internal-segfault.patch | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/glibc-2.20-getifaddrs_internal-segfault.patch b/glibc-2.20-getifaddrs_internal-segfault.patch new file mode 100644 index 000000000000..57c84f8b4792 --- /dev/null +++ b/glibc-2.20-getifaddrs_internal-segfault.patch @@ -0,0 +1,29 @@ +diff --git a/sysdeps/unix/sysv/linux/ifaddrs.c b/sysdeps/unix/sysv/linux/ifaddrs.c +index 2c04e17..a47b2ed 100644 +--- a/sysdeps/unix/sysv/linux/ifaddrs.c ++++ b/sysdeps/unix/sysv/linux/ifaddrs.c +@@ -770,20 +770,17 @@ getifaddrs_internal (struct ifaddrs **ifap) + + if (cp != NULL) + { +- char c; + unsigned int preflen; + +- if ((max_prefixlen > 0) && +- (ifam->ifa_prefixlen > max_prefixlen)) ++ if (ifam->ifa_prefixlen > max_prefixlen) + preflen = max_prefixlen; + else + preflen = ifam->ifa_prefixlen; + +- for (i = 0; i < ((preflen - 1) / 8); i++) ++ for (i = 0; i < preflen / 8; i++) + *cp++ = 0xff; +- c = 0xff; +- c <<= ((128 - preflen) % 8); +- *cp = c; ++ if (preflen % 8) ++ *cp = 0xff << (8 - preflen % 8); + } + } + } |