-
-
Notifications
You must be signed in to change notification settings - Fork 35.4k
Expand file tree
/
Copy pathtest-crypto-tostring-segfault.js
More file actions
27 lines (22 loc) · 855 Bytes
/
test-crypto-tostring-segfault.js
File metadata and controls
27 lines (22 loc) · 855 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
'use strict';
const common = require('../common');
if (!common.hasCrypto)
common.skip('missing crypto');
// This test ensures that node doesn't SEGFAULT when either of
// `crypto.createHash` or `crypto.createHmac` are given an object that defines
// a throwing `toString`.
// https://github.com/nodejs/node/issues/9819
const assert = require('assert');
const execFile = require('child_process').execFile;
const setup = 'const enc = { toString: () => { throw new Error("xyz"); } };';
const scripts = [
'crypto.createHash("sha256").digest(enc)',
'crypto.createHmac("sha256", "msg").digest(enc)'
];
scripts.forEach((script) => {
const node = process.execPath;
const code = `${setup};${script}`;
execFile(node, [ '-e', code ], common.mustCall((err, stdout, stderr) => {
assert(stderr.includes('Error: xyz'), 'digest crashes');
}));
});