summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorQuentin Rameau <quinq@fifth.space>2023-10-04 21:29:43 +0200
committerRich Felker <dalias@aerifal.cx>2023-11-06 13:50:21 -0500
commit8c086e767468cc11c6d58d6a92d8511c2bd12024 (patch)
tree83656bef574fd7ca5d5b99163d0f5b996aa16e72 /src
parent2265a4c9b0825306794eeb0812c783692313d972 (diff)
downloadmusl-8c086e767468cc11c6d58d6a92d8511c2bd12024.tar.gz
remove arbitrary limit from dns result parsing
The name resolution would abort when getting more than 63 records per request, due to what seems to be a left-over from the original code. This check was non-breaking but spurious prior to TCP fallback support, since any 512-byte packet with more than 63 records was necessarily malformed. But now, it wrongly rejects valid results. Reported by Daniel Stefanik in Alpine Linux aports issue 15320.
Diffstat (limited to 'src')
-rw-r--r--src/network/dns_parse.c1
1 files changed, 0 insertions, 1 deletions
diff --git a/src/network/dns_parse.c b/src/network/dns_parse.c
index ea1ec126..09813112 100644
--- a/src/network/dns_parse.c
+++ b/src/network/dns_parse.c
@@ -12,7 +12,6 @@ int __dns_parse(const unsigned char *r, int rlen, int (*callback)(void *, int, c
p = r+12;
qdcount = r[4]*256 + r[5];
ancount = r[6]*256 + r[7];
- if (qdcount+ancount > 64) return -1;
while (qdcount--) {
while (p-r < rlen && *p-1U < 127) p++;
if (p>r+rlen-6)