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.
This commit is contained in:
Quentin Rameau 2024-04-23 09:32:47 -07:00 committed by Justine Tunney
parent 1a6b4ab627
commit 6992d8c195
No known key found for this signature in database
GPG key ID: BE714B4575D6E328

View file

@ -40,7 +40,6 @@ int __dns_parse(const unsigned char *r, int rlen,
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)