summaryrefslogtreecommitdiff
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
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.
-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)