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

Reply via email to