r4741 - in glibc-package/trunk/debian: . patches patches/any
Author: aurel32
Date: 2011-06-20 20:33:34 +0000 (Mon, 20 Jun 2011)
New Revision: 4741
Added:
glibc-package/trunk/debian/patches/any/cvs-resolv-different-nameserver.diff
Modified:
glibc-package/trunk/debian/changelog
glibc-package/trunk/debian/patches/series
Log:
* Add patches/any/cvs-resolv-different-nameserver.diff to try a different
nameserver if the first one returns REFUSED. Closes: #535504, #602291.
Modified: glibc-package/trunk/debian/changelog
===================================================================
--- glibc-package/trunk/debian/changelog 2011-06-20 11:08:34 UTC (rev 4740)
+++ glibc-package/trunk/debian/changelog 2011-06-20 20:33:34 UTC (rev 4741)
@@ -7,6 +7,8 @@
[ Aurelien Jarno ]
* Add patches/any/cvs-addmntent.diff to correctly report errors status in
addmntent(). Closes: #630699 / CVE-2011-1089.
+ * Add patches/any/cvs-resolv-different-nameserver.diff to try a different
+ nameserver if the first one returns REFUSED. Closes: #535504, #602291.
-- Aurelien Jarno <aurel32@debian.org> Mon, 20 Jun 2011 13:07:17 +0200
Added: glibc-package/trunk/debian/patches/any/cvs-resolv-different-nameserver.diff
===================================================================
--- glibc-package/trunk/debian/patches/any/cvs-resolv-different-nameserver.diff (rev 0)
+++ glibc-package/trunk/debian/patches/any/cvs-resolv-different-nameserver.diff 2011-06-20 20:33:34 UTC (rev 4741)
@@ -0,0 +1,59 @@
+2011-06-15 Ulrich Drepper <drepper@gmail.com>
+
+ * resolv/res_send.c (__libc_res_nsend): Fix typos in last patch. We
+ need to dereference resplen2.
+
+2011-05-30 Ulrich Drepper <drepper@gmail.com>
+
+ [BZ #12684]
+ * resolv/res_send.c (__libc_res_nsend): Only go to the next name server
+ if both request failed.
+ (send_dg): In case of server errors clear resplen or *resplen2.
+
+diff --git a/resolv/res_send.c b/resolv/res_send.c
+index 845b658..97142b7 100644
+--- a/resolv/res_send.c
++++ b/resolv/res_send.c
+@@ -549,7 +549,7 @@ __libc_res_nsend(res_state statp, const u_char *buf, int buflen,
+ ns, ansp, ansp2, nansp2, resplen2);
+ if (n < 0)
+ return (-1);
+- if (n == 0)
++ if (n == 0 && (buf2 == NULL || *resplen2 == 0))
+ goto next_ns;
+ } else {
+ /* Use datagrams. */
+@@ -559,7 +559,7 @@ __libc_res_nsend(res_state statp, const u_char *buf, int buflen,
+ ansp2, nansp2, resplen2);
+ if (n < 0)
+ return (-1);
+- if (n == 0)
++ if (n == 0 && (buf2 == NULL || *resplen2 == 0))
+ goto next_ns;
+ if (v_circuit)
+ // XXX Check whether both requests failed or
+@@ -1275,10 +1275,14 @@ send_dg(res_state statp,
+ (*thisresplenp > *thisanssizp)
+ ? *thisanssizp : *thisresplenp);
+
+- if (recvresp1 || (buf2 != NULL && recvresp2))
++ if (recvresp1 || (buf2 != NULL && recvresp2)) {
++ *resplen2 = 0;
+ return resplen;
++ }
+ if (buf2 != NULL)
+ {
++ /* No data from the first reply. */
++ resplen = 0;
+ /* We are waiting for a possible second reply. */
+ if (hp->id == anhp->id)
+ recvresp1 = 1;
+@@ -1344,7 +1348,7 @@ send_dg(res_state statp,
+ goto err_out;
+ }
+ else {
+- /* poll should not have returned > 0 in this case. */
++ /* poll should not have returned > 0 in this case. */
+ abort ();
+ }
+ }
Modified: glibc-package/trunk/debian/patches/series
===================================================================
--- glibc-package/trunk/debian/patches/series 2011-06-20 11:08:34 UTC (rev 4740)
+++ glibc-package/trunk/debian/patches/series 2011-06-20 20:33:34 UTC (rev 4741)
@@ -269,3 +269,4 @@
any/cvs-unique_sym_table-corruptions.diff
any/submitted-mqueue-throw.diff
any/cvs-addmntent.diff
+any/cvs-resolv-different-nameserver.diff
Reply to: