From 8c086e767468cc11c6d58d6a92d8511c2bd12024 Mon Sep 17 00:00:00 2001 From: Quentin Rameau Date: Wed, 4 Oct 2023 21:29:43 +0200 Subject: 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. --- src/network/dns_parse.c | 1 - 1 file changed, 1 deletion(-) 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) -- cgit v1.2.1