r5210 - in glibc-package/trunk/debian: . patches patches/any
Author: aurel32
Date: 2012-04-26 15:50:14 +0000 (Thu, 26 Apr 2012)
New Revision: 5210
Added:
glibc-package/trunk/debian/patches/any/cvs-getaddrinfo-AI_V4MAPPED.diff
Modified:
glibc-package/trunk/debian/changelog
glibc-package/trunk/debian/patches/series
Log:
* Add patches/any/cvs-getaddrinfo-AI_V4MAPPED.diff to correctly handle
AI_V4MAPPED flag in getaddrinfo(). Closes: #663752.
Modified: glibc-package/trunk/debian/changelog
===================================================================
--- glibc-package/trunk/debian/changelog 2012-04-26 15:43:09 UTC (rev 5209)
+++ glibc-package/trunk/debian/changelog 2012-04-26 15:50:14 UTC (rev 5210)
@@ -50,6 +50,8 @@
patches/arm/local-soname-hack.diff to fix non-policy compliant patch
name.
* Don't install getent(1). Closes: #665303.
+ * Add patches/any/cvs-getaddrinfo-AI_V4MAPPED.diff to correctly handle
+ AI_V4MAPPED flag in getaddrinfo(). Closes: #663752.
-- Aurelien Jarno <aurel32@debian.org> Thu, 26 Apr 2012 16:37:27 +0200
Added: glibc-package/trunk/debian/patches/any/cvs-getaddrinfo-AI_V4MAPPED.diff
===================================================================
--- glibc-package/trunk/debian/patches/any/cvs-getaddrinfo-AI_V4MAPPED.diff (rev 0)
+++ glibc-package/trunk/debian/patches/any/cvs-getaddrinfo-AI_V4MAPPED.diff 2012-04-26 15:50:14 UTC (rev 5210)
@@ -0,0 +1,60 @@
+2011-06-22 Andreas Schwab <schwab@redhat.com>
+
+ * sysdeps/posix/getaddrinfo.c (gaih_inet): Fix last change.
+
+2011-06-21 Ulrich Drepper <drepper@gmail.com>
+
+ [BZ #12885]
+ * sysdeps/posix/getaddrinfo.c (gaih_inet): When looking up only IPv6
+ addresses using gethostbyname4_r ignore IPv4 addresses.
+
+--- a/sysdeps/posix/getaddrinfo.c
++++ b/sysdeps/posix/getaddrinfo.c
+@@ -732,16 +732,44 @@
+ tmpbuflen, 2 * tmpbuflen);
+ }
+
+- no_inet6_data = no_data;
+-
+ if (status == NSS_STATUS_SUCCESS)
+ {
++ assert (!no_data);
++ no_data = 1;
++
+ if ((req->ai_flags & AI_CANONNAME) != 0 && canon == NULL)
+ canon = (*pat)->name;
+
+ while (*pat != NULL)
+- pat = &((*pat)->next);
++ {
++ if ((*pat)->family == AF_INET
++ && req->ai_family == AF_INET6
++ && (req->ai_flags & AI_V4MAPPED) != 0)
++ {
++ uint32_t *pataddr = (*pat)->addr;
++ (*pat)->family = AF_INET6;
++ pataddr[3] = pataddr[0];
++ pataddr[2] = htonl (0xffff);
++ pataddr[1] = 0;
++ pataddr[0] = 0;
++ pat = &((*pat)->next);
++ no_data = 0;
++ }
++ else if (req->ai_family == AF_UNSPEC
++ || (*pat)->family == req->ai_family)
++ {
++ pat = &((*pat)->next);
++
++ no_data = 0;
++ if (req->ai_family == AF_INET6)
++ got_ipv6 = true;
++ }
++ else
++ *pat = ((*pat)->next);
++ }
+ }
++
++ no_inet6_data = no_data;
+ }
+ else
+ {
Modified: glibc-package/trunk/debian/patches/series
===================================================================
--- glibc-package/trunk/debian/patches/series 2012-04-26 15:43:09 UTC (rev 5209)
+++ glibc-package/trunk/debian/patches/series 2012-04-26 15:50:14 UTC (rev 5210)
@@ -337,3 +337,4 @@
any/cvs-fmtmsg-lock.diff
any/cvs-reloc-sort.diff
any/submitted-resolv-first-query-failure.diff
+any/cvs-getaddrinfo-AI_V4MAPPED.diff
Reply to: