crypto: fix input validation in crypto.hash

PR-URL: https://github.com/nodejs/node/pull/52070
Refs: https://github.com/nodejs/node/pull/51044/files#r1522362983
Reviewed-By: Vinícius Lourenço Claro Cardoso <contact@viniciusl.com.br>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
This commit is contained in:
Antoine du Hamel 2024-03-21 13:12:31 +02:00 committed by GitHub
parent 0a252c23d9
commit 6dd1c75f4a
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -52,7 +52,6 @@ const {
validateEncoding,
validateString,
validateUint32,
validateBuffer,
} = require('internal/validators');
const {
@ -196,8 +195,8 @@ async function asyncDigest(algorithm, data) {
function hash(algorithm, input, outputEncoding = 'hex') {
validateString(algorithm, 'algorithm');
if (typeof input !== 'string') {
validateBuffer(input, 'input');
if (typeof input !== 'string' && !isArrayBufferView(input)) {
throw new ERR_INVALID_ARG_TYPE('input', ['Buffer', 'TypedArray', 'DataView', 'string'], input);
}
let normalized = outputEncoding;
// Fast case: if it's 'hex', we don't need to validate it further.