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.
pull/1141/head
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
1 changed files with 0 additions and 1 deletions

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)