]> git.pld-linux.org Git - packages/glibc.git/commitdiff
- rel 7; revert fix for bug 12684 (causes segfaults in resolver code when ns is not... auto/th/glibc-2_14-7
authorArkadiusz Miśkiewicz <arekm@maven.pl>
Fri, 10 Jun 2011 07:48:35 +0000 (07:48 +0000)
committercvs2git <feedback@pld-linux.org>
Sun, 24 Jun 2012 12:13:13 +0000 (12:13 +0000)
Changed files:
    glibc-bug-12684.patch -> 1.1
    glibc.spec -> 1.915

glibc-bug-12684.patch [new file with mode: 0644]
glibc.spec

diff --git a/glibc-bug-12684.patch b/glibc-bug-12684.patch
new file mode 100644 (file)
index 0000000..63c5b80
--- /dev/null
@@ -0,0 +1,68 @@
+commit 4769ae77fc6c8dacea6476addb015c8797848cdd
+Author: Ulrich Drepper <drepper@gmail.com>
+Date:   Mon May 30 22:48:47 2011 -0400
+
+    Handle DNS server failures in case of AF_UNSPEC lookups correctly
+
+diff --git a/ChangeLog b/ChangeLog
+index 31719ab..dd4ad9e 100644
+--- a/ChangeLog
++++ b/ChangeLog
+@@ -1,5 +1,10 @@
+ 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.
++
+       [BZ #12454]
+       * elf/dl-deps.c (_dl_map_object_deps): Run initializer sorting only
+       when there are multiple maps.
+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 ();
+       }
+ }
index f122f183047a89e3f806ca9a375007da1137c8c6..c95e91e790718b6ea1654c31cfd9da2f45ef718f 100644 (file)
@@ -35,7 +35,7 @@ Summary(tr.UTF-8):    GNU libc
 Summary(uk.UTF-8):     GNU libc версії
 Name:          glibc
 Version:       2.14
-Release:       6
+Release:       7
 Epoch:         6
 License:       LGPL v2.1+
 Group:         Libraries
@@ -84,6 +84,7 @@ Patch37:      0061_all_glibc-2.13-static-memset.patch
 Patch38:       1055_all_glibc-resolv-dynamic.patch
 Patch39:       %{name}-git.patch
 Patch40:       %{name}-bad-fix.patch
+Patch41:       %{name}-bug-12684.patch
 URL:           http://www.gnu.org/software/libc/
 %{?with_selinux:BuildRequires: audit-libs-devel}
 BuildRequires: autoconf
@@ -950,6 +951,8 @@ mv %{name}-ports-%{ports_version} ports
 %patch38 -p1
 %patch39 -p1
 %patch40 -p1
+# revert broken fix
+%patch41 -p1 -R
 
 # cleanup backups after patching
 find '(' -name '*~' -o -name '*.orig' ')' -print0 | xargs -0 -r -l512 rm -f
This page took 0.2738 seconds and 4 git commands to generate.