[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: