From: Evan Lucas Date: Wed, 25 Feb 2015 22:59:29 +0000 (-0600) Subject: src: fix intermittent SIGSEGV in resolveTxt X-Git-Tag: v1.4.1~5 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=e435a0114d973231f44b10edbff583210e975510;p=platform%2Fupstream%2Fnodejs.git src: fix intermittent SIGSEGV in resolveTxt Fixes a SIGSEGV by making sure `txt_chunk` is not empty before setting it on `txt_records` PR-URL: https://github.com/iojs/io.js/pull/960 Reviewed-By: Rod Vagg --- diff --git a/src/cares_wrap.cc b/src/cares_wrap.cc index 373675f..c73f8c0 100644 --- a/src/cares_wrap.cc +++ b/src/cares_wrap.cc @@ -611,8 +611,9 @@ class QueryTxtWrap: public QueryWrap { } txt_chunk->Set(j++, txt); } - // Push last chunk - txt_records->Set(i, txt_chunk); + // Push last chunk if it isn't empty + if (!txt_chunk.IsEmpty()) + txt_records->Set(i, txt_chunk); ares_free_data(txt_out); diff --git a/test/internet/test-dns-txt-sigsegv.js b/test/internet/test-dns-txt-sigsegv.js new file mode 100644 index 0000000..75d34c2 --- /dev/null +++ b/test/internet/test-dns-txt-sigsegv.js @@ -0,0 +1,8 @@ +var common = require('../common'); +var assert = require('assert'); +var dns = require('dns'); + +dns.resolveTxt('www.microsoft.com', function(err, records) { + assert.equal(err, null); + assert.equal(records.length, 0); +});