diff options
author | Anna Henningsen <anna@addaleax.net> | 2019-11-27 23:51:54 +0300 |
---|---|---|
committer | Anna Henningsen <anna@addaleax.net> | 2019-11-30 04:03:46 +0300 |
commit | 48cadcb7aa902ee1af01357a2cf340ae5bc60f87 (patch) | |
tree | c5be14fb4f897b34db57fcca03975f82a5dd1398 | |
parent | f4f8ec2b65ea1e520c93ad0cee3d7241d113934d (diff) |
dns: use length for building TXT string
Rely on the length reported by C-Ares rather than `\0`-termination
for creating the JS string for a dns TXT response.
Fixes: https://github.com/nodejs/node/issues/30688
PR-URL: https://github.com/nodejs/node/pull/30690
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: David Carlier <devnexen@gmail.com>
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: James M Snell <jasnell@gmail.com>
-rw-r--r-- | src/cares_wrap.cc | 3 | ||||
-rw-r--r-- | test/parallel/test-dns-resolveany.js | 2 |
2 files changed, 3 insertions, 2 deletions
diff --git a/src/cares_wrap.cc b/src/cares_wrap.cc index 1fb0f47dd80..f7a02e469aa 100644 --- a/src/cares_wrap.cc +++ b/src/cares_wrap.cc @@ -904,7 +904,8 @@ int ParseTxtReply(Environment* env, uint32_t i = 0, j; uint32_t offset = ret->Length(); for (j = 0; current != nullptr; current = current->next) { - Local<String> txt = OneByteString(env->isolate(), current->txt); + Local<String> txt = + OneByteString(env->isolate(), current->txt, current->length); // New record found - write out the current chunk if (current->record_start) { diff --git a/test/parallel/test-dns-resolveany.js b/test/parallel/test-dns-resolveany.js index bb15b1a38b4..33beee847fd 100644 --- a/test/parallel/test-dns-resolveany.js +++ b/test/parallel/test-dns-resolveany.js @@ -11,7 +11,7 @@ const answers = [ { type: 'AAAA', address: '::42', ttl: 123 }, { type: 'MX', priority: 42, exchange: 'foobar.com', ttl: 124 }, { type: 'NS', value: 'foobar.org', ttl: 457 }, - { type: 'TXT', entries: [ 'v=spf1 ~all', 'xyz' ] }, + { type: 'TXT', entries: [ 'v=spf1 ~all', 'xyz\0foo' ] }, { type: 'PTR', value: 'baz.org', ttl: 987 }, { type: 'SOA', |