mirror of https://github.com/lukechilds/node.git
Browse Source
Forced conversion of the encoding parameter to a string within crypto.js, fixing segmentation faults in node_crypto.cc. Fixes: https://github.com/nodejs/node/issues/9819 PR-URL: https://github.com/nodejs/node/pull/12164 Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl> Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: James M Snell <jasnell@gmail.com>v7.x
Tobias Nießen
8 years ago
committed by
Italo A. Casas
4 changed files with 35 additions and 14 deletions
@ -0,0 +1,24 @@ |
|||||
|
'use strict'; |
||||
|
const common = require('../common'); |
||||
|
const assert = require('assert'); |
||||
|
const execFile = require('child_process').execFile; |
||||
|
|
||||
|
if (!common.hasCrypto) { |
||||
|
common.skip('missing crypto'); |
||||
|
return; |
||||
|
} |
||||
|
|
||||
|
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'); |
||||
|
})); |
||||
|
}); |
Loading…
Reference in new issue