Skip to content

Commit 7925938

Browse files
aduh95ruyadorno
authored andcommitted
crypto: fix DiffieHellman argument validation
Fixes: #37808 PR-URL: #37810 Reviewed-By: James M Snell <[email protected]> Reviewed-By: Filip Skokan <[email protected]> Reviewed-By: Darshan Sen <[email protected]> Reviewed-By: Benjamin Gruenbaum <[email protected]>
1 parent 3452618 commit 7925938

File tree

2 files changed

+17
-3
lines changed

2 files changed

+17
-3
lines changed

‎lib/internal/crypto/diffiehellman.js‎

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -118,12 +118,20 @@ function DiffieHellman(sizeOrKey, keyEncoding, generator, genEncoding){
118118
if(typeofsizeOrKey!=='number')
119119
sizeOrKey=toBuf(sizeOrKey,keyEncoding);
120120

121-
if(!generator)
121+
if(!generator){
122122
generator=DH_GENERATOR;
123-
elseif(typeofgenerator==='number')
123+
}elseif(typeofgenerator==='number'){
124124
validateInt32(generator,'generator');
125-
else
125+
}elseif(generator!==true){
126126
generator=toBuf(generator,genEncoding);
127+
}else{
128+
thrownewERR_INVALID_ARG_TYPE(
129+
'generator',
130+
['number','string','ArrayBuffer','Buffer','TypedArray','DataView'],
131+
generator
132+
);
133+
}
134+
127135

128136
this[kHandle]=new_DiffieHellman(sizeOrKey,generator);
129137
ObjectDefineProperty(this,'verifyError',{

‎test/parallel/test-crypto-dh.js‎

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -489,3 +489,9 @@ assert.throws(
489489
'crypto.getDiffieHellman(\'modp1\').setPublicKey(\'\') '+
490490
'failed to throw the expected error.'
491491
);
492+
assert.throws(
493+
()=>crypto.createDiffieHellman('',true),
494+
{
495+
code: 'ERR_INVALID_ARG_TYPE'
496+
}
497+
);

0 commit comments

Comments
(0)