diff options
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.patch | 41 |
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 0000000000..74cd37c505 --- /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 + |