Browse Source

src: fix intermittent SIGSEGV in resolveTxt

Fixes a SIGSEGV by making sure `txt_chunk` is not empty before setting
it on `txt_records`

Fixes: https://github.com/joyent/node/issues/9285
PR-URL: https://github.com/joyent/node/pull/9300
Reviewed-By: cjihrig - Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: jasnell - James M Snell <jasnell@gmail.com>
v0.12-staging
Evan Lucas 10 years ago
committed by James M Snell
parent
commit
261fa3620f
  1. 3
      src/cares_wrap.cc
  2. 8
      test/internet/test-dns-txt-sigsegv.js

3
src/cares_wrap.cc

@ -633,7 +633,8 @@ class QueryTxtWrap: public QueryWrap {
}
txt_chunk->Set(j++, txt);
}
// Push last chunk
// Push last chunk if it isn't empty
if (!txt_chunk.IsEmpty())
txt_records->Set(i, txt_chunk);
ares_free_data(txt_out);

8
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);
});
Loading…
Cancel
Save