summaryrefslogtreecommitdiffstats
path: root/main/libc0.9.32/0002-resolv-res_query-for-CNAMEs.patch
diff options
context:
space:
mode:
Diffstat (limited to 'main/libc0.9.32/0002-resolv-res_query-for-CNAMEs.patch')
-rw-r--r--main/libc0.9.32/0002-resolv-res_query-for-CNAMEs.patch41
1 files changed, 41 insertions, 0 deletions
diff --git a/main/libc0.9.32/0002-resolv-res_query-for-CNAMEs.patch b/main/libc0.9.32/0002-resolv-res_query-for-CNAMEs.patch
new file mode 100644
index 000000000..74cd37c50
--- /dev/null
+++ b/main/libc0.9.32/0002-resolv-res_query-for-CNAMEs.patch
@@ -0,0 +1,41 @@
+From 811e804c7a403783b0c4cc5eb75f24da809081d8 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Timo=20Ter=C3=A4s?= <timo.teras@iki.fi>
+Date: Fri, 23 Dec 2011 14:15:16 +0100
+Subject: [PATCH] resolv: res_query for CNAMEs
+
+From: http://lists.busybox.net/pipermail/uclibc/2009-June/042583.html
+
+I had postfix failing for domains with MX->CNAME->A chain. In glibc it works.
+I tracked it to be a problem in uclibc res_query. It returns bogus data
+for CNAME entries, apparently intentionally, which is wrong.
+
+glibc return CNAME entries even for CNAME queries and most applications rely
+on this. So we should do the same in uclibc.
+
+Signed-off-by: Natanael Copa <ncopa@alpinelinux.org>
+---
+ libc/inet/resolv.c | 8 +++-----
+ 1 files changed, 3 insertions(+), 5 deletions(-)
+
+diff --git a/libc/inet/resolv.c b/libc/inet/resolv.c
+index 021d5bf..2371fb9 100644
+--- a/libc/inet/resolv.c
++++ b/libc/inet/resolv.c
+@@ -3099,11 +3099,9 @@ int res_query(const char *dname, int class, int type,
+
+ free(a.dotted);
+
+- if (a.atype == type) { /* CNAME */
+- if (i > anslen)
+- i = anslen;
+- memcpy(answer, packet, i);
+- }
++ i = MIN(anslen, i);
++ memcpy(answer, packet, i);
++
+ free(packet);
+ return i;
+ }
+--
+1.7.8
+