diff options
author | David Drysdale <drysdale@google.com> | 2017-05-22 10:54:10 +0100 |
---|---|---|
committer | Myles Borins <mylesborins@google.com> | 2017-07-11 17:46:16 +0100 |
commit | a73142524b55eb50d1c28d15ea8f65289206a69a (patch) | |
tree | 14951916e360435e4d69e6bc0f70825cb6ee746e /deps/cares | |
parent | 199ad1d73f81c1d568232df418090e9ce3c4a7fb (diff) | |
download | android-node-v8-a73142524b55eb50d1c28d15ea8f65289206a69a.tar.gz android-node-v8-a73142524b55eb50d1c28d15ea8f65289206a69a.tar.bz2 android-node-v8-a73142524b55eb50d1c28d15ea8f65289206a69a.zip |
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>
Diffstat (limited to 'deps/cares')
-rw-r--r-- | deps/cares/src/ares_parse_naptr_reply.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/deps/cares/src/ares_parse_naptr_reply.c b/deps/cares/src/ares_parse_naptr_reply.c index 11634df984..717d355778 100644 --- a/deps/cares/src/ares_parse_naptr_reply.c +++ b/deps/cares/src/ares_parse_naptr_reply.c @@ -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; } - |