Author: aurel32 Date: 2010-01-05 23:10:28 +0000 (Tue, 05 Jan 2010) New Revision: 4052
Added: glibc-package/trunk/debian/patches/any/cvs-resolv-init.diff Modified: glibc-package/trunk/debian/changelog glibc-package/trunk/debian/patches/series Log: * Add debian/patches/any/cvs-resolv-init.diff to fix mixing IPv4 and IPv6 name server in resolv.conf. Modified: glibc-package/trunk/debian/changelog =================================================================== --- glibc-package/trunk/debian/changelog 2010-01-05 16:03:37 UTC (rev 4051) +++ glibc-package/trunk/debian/changelog 2010-01-05 23:10:28 UTC (rev 4052) @@ -10,11 +10,13 @@ #563754. * Add debian/patches/localedata/locale-et_EE.diff to change weekday and workday to Monday. Closes: #563636. + * Add debian/patches/any/cvs-resolv-init.diff to fix mixing IPv4 and + IPv6 name server in resolv.conf. [ Petr Salinger] * kfreebsd/local-sysdeps.diff: update to revision 2907 (from glibc-bsd). - -- Aurelien Jarno <aure...@debian.org> Tue, 05 Jan 2010 17:02:09 +0100 + -- Aurelien Jarno <aure...@debian.org> Wed, 06 Jan 2010 00:10:12 +0100 eglibc (2.10.2-3) unstable; urgency=low Added: glibc-package/trunk/debian/patches/any/cvs-resolv-init.diff =================================================================== --- glibc-package/trunk/debian/patches/any/cvs-resolv-init.diff (rev 0) +++ glibc-package/trunk/debian/patches/any/cvs-resolv-init.diff 2010-01-05 23:10:28 UTC (rev 4052) @@ -0,0 +1,101 @@ +2009-10-29 Ulrich Drepper <drep...@redhat.com> + + * resolv/res_send.c (__libc_res_nsend): Fix copying of IPv4 server + addresses. Patch by Petar Bogdanovic <pe...@smokva.net>. + +diff --git a/resolv/res_send.c b/resolv/res_send.c +index 4c14db1..fa48bd9 100644 +--- a/resolv/res_send.c ++++ b/resolv/res_send.c +@@ -219,33 +219,33 @@ res_ourserver_p(const res_state statp, const struct sockaddr_in6 *inp) + { + int ns; + +- if (inp->sin6_family == AF_INET) { +- struct sockaddr_in *in4p = (struct sockaddr_in *) inp; ++ if (inp->sin6_family == AF_INET) { ++ struct sockaddr_in *in4p = (struct sockaddr_in *) inp; + in_port_t port = in4p->sin_port; + in_addr_t addr = in4p->sin_addr.s_addr; + +- for (ns = 0; ns < MAXNS; ns++) { +- const struct sockaddr_in *srv = ++ for (ns = 0; ns < MAXNS; ns++) { ++ const struct sockaddr_in *srv = + (struct sockaddr_in *)EXT(statp).nsaddrs[ns]; + +- if ((srv != NULL) && (srv->sin_family == AF_INET) && +- (srv->sin_port == port) && +- (srv->sin_addr.s_addr == INADDR_ANY || +- srv->sin_addr.s_addr == addr)) +- return (1); +- } +- } else if (inp->sin6_family == AF_INET6) { +- for (ns = 0; ns < MAXNS; ns++) { +- const struct sockaddr_in6 *srv = EXT(statp).nsaddrs[ns]; +- if ((srv != NULL) && (srv->sin6_family == AF_INET6) && +- (srv->sin6_port == inp->sin6_port) && +- !(memcmp(&srv->sin6_addr, &in6addr_any, +- sizeof (struct in6_addr)) && +- memcmp(&srv->sin6_addr, &inp->sin6_addr, +- sizeof (struct in6_addr)))) +- return (1); +- } +- } ++ if ((srv != NULL) && (srv->sin_family == AF_INET) && ++ (srv->sin_port == port) && ++ (srv->sin_addr.s_addr == INADDR_ANY || ++ srv->sin_addr.s_addr == addr)) ++ return (1); ++ } ++ } else if (inp->sin6_family == AF_INET6) { ++ for (ns = 0; ns < MAXNS; ns++) { ++ const struct sockaddr_in6 *srv = EXT(statp).nsaddrs[ns]; ++ if ((srv != NULL) && (srv->sin6_family == AF_INET6) && ++ (srv->sin6_port == inp->sin6_port) && ++ !(memcmp(&srv->sin6_addr, &in6addr_any, ++ sizeof (struct in6_addr)) && ++ memcmp(&srv->sin6_addr, &inp->sin6_addr, ++ sizeof (struct in6_addr)))) ++ return (1); ++ } ++ } + return (0); + } + +@@ -445,7 +445,7 @@ __libc_res_nsend(res_state statp, const u_char *buf, int buflen, + malloc(sizeof (struct sockaddr_in6)); + if (EXT(statp).nsaddrs[n] != NULL) { + memset (mempcpy(EXT(statp).nsaddrs[n], +- &statp->nsaddr_list[ns], ++ &statp->nsaddr_list[n], + sizeof (struct sockaddr_in)), + '\0', + sizeof (struct sockaddr_in6) +@@ -1003,7 +1003,7 @@ send_dg(res_state statp, + int orig_anssizp = *anssizp; + struct timespec now, timeout, finish; + struct pollfd pfd[1]; +- int ptimeout; ++ int ptimeout; + struct sockaddr_in6 from; + int resplen, n; + +@@ -1050,7 +1050,7 @@ send_dg(res_state statp, + evSubTime(&timeout, &finish, &now); + need_recompute = 0; + } +- /* Convert struct timespec in milliseconds. */ ++ /* Convert struct timespec in milliseconds. */ + ptimeout = timeout.tv_sec * 1000 + timeout.tv_nsec / 1000000; + + n = 0; +@@ -1244,7 +1244,7 @@ send_dg(res_state statp, + /* record the error */ + statp->_flags |= RES_F_EDNS0ERR; + goto err_out; +- } ++ } + #endif + if (!(statp->options & RES_INSECURE2) + && (recvresp1 || !res_queriesmatch(buf, buf + buflen, Modified: glibc-package/trunk/debian/patches/series =================================================================== --- glibc-package/trunk/debian/patches/series 2010-01-05 16:03:37 UTC (rev 4051) +++ glibc-package/trunk/debian/patches/series 2010-01-05 23:10:28 UTC (rev 4052) @@ -221,3 +221,4 @@ any/local-ntp-update.diff any/cvs-malloc_info-output.diff #any/cvs-futimens.diff +debian/patches/any/cvs-resolv-init.diff -- To UNSUBSCRIBE, email to debian-glibc-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org