r4052 - in glibc-package/trunk/debian: . patches patches/any
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 <aurel32@debian.org> Tue, 05 Jan 2010 17:02:09 +0100
+ -- Aurelien Jarno <aurel32@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 <drepper@redhat.com>
+
+ * resolv/res_send.c (__libc_res_nsend): Fix copying of IPv4 server
+ addresses. Patch by Petar Bogdanovic <petar@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
Reply to: