summaryrefslogtreecommitdiff
path: root/deps/cares
diff options
context:
space:
mode:
authorDavid Drysdale <drysdale@google.com>2017-05-22 10:54:10 +0100
committerMyles Borins <mylesborins@google.com>2017-07-11 17:46:16 +0100
commita73142524b55eb50d1c28d15ea8f65289206a69a (patch)
tree14951916e360435e4d69e6bc0f70825cb6ee746e /deps/cares
parent199ad1d73f81c1d568232df418090e9ce3c4a7fb (diff)
downloadandroid-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.c7
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;
}
-