mirror of
git://git.musl-libc.org/musl
synced 2025-03-06 20:48:29 +01:00
dns: check length field in tcp response message
The received length field in the message may be greater than the size of the 'answer' buffer in which the message resides. Currently, ABUF_SIZE is 768. And if we get a larger 'alens[i]', it will result in an out-of-bounds reading in __dns_parse(). To fix this, limit the length to the size of the received buffer.
This commit is contained in:
parent
1d5750b95c
commit
77327ed064
1 changed files with 1 additions and 0 deletions
|
@ -179,6 +179,7 @@ static int name_from_dns(struct address buf[static MAXADDRS], char canon[static
|
|||
|
||||
for (i=nq-1; i>=0; i--) {
|
||||
ctx.rrtype = qtypes[i];
|
||||
if (alens[i] > sizeof(abuf[i])) alens[i] = sizeof abuf[i];
|
||||
__dns_parse(abuf[i], alens[i], dns_parse_callback, &ctx);
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue