GeezerVison is showing github.com — crypto: fix DiffieHellman argument validation · nodejs/node@46ece20
File tree
Expand file treeCollapse file tree
Open diff view settings
Expand file treeCollapse file tree
Open diff view settings
Collapse file
Copy file name to clipboardExpand all lines: lib/internal/crypto/diffiehellman.js +11-3Lines changed: 11 additions & 3 deletions | Original file line number | Diff line number | Diff line change |
|---|
@@ -75,12 +75,20 @@ function DiffieHellman(sizeOrKey, keyEncoding, generator, genEncoding) { |
75 | 75 | if (typeof sizeOrKey !== 'number') |
76 | 76 | sizeOrKey = toBuf(sizeOrKey, keyEncoding); |
77 | 77 |
|
78 | | - if (!generator) |
| 78 | + if (!generator) { |
79 | 79 | generator = DH_GENERATOR; |
80 | | - else if (typeof generator === 'number') |
| 80 | + } else if (typeof generator === 'number') { |
81 | 81 | validateInt32(generator, 'generator'); |
82 | | - else |
| 82 | + } else if (generator !== true) { |
83 | 83 | generator = toBuf(generator, genEncoding); |
| 84 | + } else { |
| 85 | + throw new ERR_INVALID_ARG_TYPE( |
| 86 | + 'generator', |
| 87 | + ['number', 'string', 'ArrayBuffer', 'Buffer', 'TypedArray', 'DataView'], |
| 88 | + generator |
| 89 | + ); |
| 90 | + } |
| 91 | + |
84 | 92 |
|
85 | 93 | this[kHandle] = new _DiffieHellman(sizeOrKey, generator); |
86 | 94 | ObjectDefineProperty(this, 'verifyError', { |
|
Collapse file
Copy file name to clipboardExpand all lines: test/parallel/test-crypto-dh.js +6Lines changed: 6 additions & 0 deletions | Original file line number | Diff line number | Diff line change |
|---|
@@ -471,3 +471,9 @@ assert.throws( |
471 | 471 | 'crypto.getDiffieHellman(\'modp1\').setPublicKey(\'\') ' + |
472 | 472 | 'failed to throw the expected error.' |
473 | 473 | ); |
| 474 | +assert.throws( |
| 475 | + () => crypto.createDiffieHellman('', true), |
| 476 | + { |
| 477 | + code: 'ERR_INVALID_ARG_TYPE' |
| 478 | + } |
| 479 | +); |