From 624a242b05397fdacc1e79007de223cd0331f6e8 Mon Sep 17 00:00:00 2001 From: Sam Roberts Date: Wed, 7 Nov 2018 16:18:03 -0800 Subject: [PATCH] test: simplify regression test for SEGV Test was introduced in 08a5b442e4 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: https://github.com/nodejs/node-v0.x-archive/issues/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) [with T = node::crypto::SecureContext]: Assertion `handle->InternalFieldCount() > 0' failed. zsh: abort (core dumped) node PR-URL: https://github.com/nodejs/node/pull/24241 Reviewed-By: Anna Henningsen Reviewed-By: Colin Ihrig --- test/parallel/test-crypto.js | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/test/parallel/test-crypto.js b/test/parallel/test-crypto.js index 1f02c07b02eb2f..21e2cca5bd3329 100644 --- a/test/parallel/test-crypto.js +++ b/test/parallel/test-crypto.js @@ -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) &&