deps: cherry-pick 9478908a49 from cares upstream
Original commit message: ares_parse_naptr_reply: check sufficient data Check that there is enough data for the required elements of an NAPTR record (2 int16, 3 bytes for string lengths) before processing a record. This patch fixes CVE-2017-1000381 The c-ares function ares_parse_naptr_reply(), which is used for parsing NAPTR responses, could be triggered to read memory outside of the given input buffer if the passed in DNS response packet was crafted in a particular way. Refs: https://c-ares.haxx.se/adv_20170620.html Refs: https://c-ares.haxx.se/CVE-2017-1000381.patch PR-URL: https://github.com/nodejs/node-private/pull/88 Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl> Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
This commit is contained in:
parent
199ad1d73f
commit
a73142524b
7
deps/cares/src/ares_parse_naptr_reply.c
vendored
7
deps/cares/src/ares_parse_naptr_reply.c
vendored
@ -110,6 +110,12 @@ ares_parse_naptr_reply (const unsigned char *abuf, int alen,
|
||||
status = ARES_EBADRESP;
|
||||
break;
|
||||
}
|
||||
/* RR must contain at least 7 bytes = 2 x int16 + 3 x name */
|
||||
if (rr_len < 7)
|
||||
{
|
||||
status = ARES_EBADRESP;
|
||||
break;
|
||||
}
|
||||
|
||||
/* Check if we are really looking at a NAPTR record */
|
||||
if (rr_class == C_IN && rr_type == T_NAPTR)
|
||||
@ -185,4 +191,3 @@ ares_parse_naptr_reply (const unsigned char *abuf, int alen,
|
||||
|
||||
return ARES_SUCCESS;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user