Skip to content
Closed
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Next Next commit
test: simplify regression test for SEGV
Test was introduced in 08a5b44 as a regression test, and has evolved
since then. Simplify the test so that it doesn't rely on an undocumented
argument to tls.createSecureCredentials().

See: nodejs/node-v0.x-archive#6690

Confirmation that this reworked test triggers the original bug:

	%) % node
	> process.version
	'v0.10.48'
	> credentials = crypto.createCredentials()
	{ context: {} }
	> context = credentials.context
	{}
	> notcontext = { setOptions: context.setOptions }
	{ setOptions: [Function: setOptions] }
	> notcontext.setOptions()
	node: ../src/node_object_wrap.h:61: static T* node::ObjectWrap::Unwrap(v8::Handle<v8::Object>) [with T = node::crypto::SecureContext]: Assertion `handle->InternalFieldCount() > 0' failed.
	zsh: abort (core dumped)  node
  • Loading branch information
sam-github committed Nov 8, 2018
commit efb47cb620c4e9a679ae2d6a059092bc0ca237f2
14 changes: 7 additions & 7 deletions test/parallel/test-crypto.js
Original file line number Diff line number Diff line change
Expand Up @@ -38,19 +38,19 @@ const tls = require('tls');
const fixtures = require('../common/fixtures');

// Test Certificates
const caPem = fixtures.readSync('test_ca.pem', 'ascii');
const certPem = fixtures.readSync('test_cert.pem', 'ascii');
const certPfx = fixtures.readSync('test_cert.pfx');
const keyPem = fixtures.readSync('test_key.pem', 'ascii');

// 'this' safety
// https://github.com/joyent/node/issues/6690
assert.throws(function() {
const options = { key: keyPem, cert: certPem, ca: caPem };
const credentials = tls.createSecureContext(options);
const credentials = tls.createSecureContext();
const context = credentials.context;
const notcontext = { setOptions: context.setOptions, setKey: context.setKey };
tls.createSecureContext({ secureOptions: 1 }, notcontext);
const notcontext = { setOptions: context.setOptions };

// Methods of native objects should not segfault when reassigned to a new
// object and called illegally. This core dumped in 0.10 and was fixed in
// 0.11.
notcontext.setOptions();
}, (err) => {
// Throws TypeError, so there is no opensslErrorStack property.
if ((err instanceof Error) &&
Expand Down