@@ -53,6 +53,7 @@ const {
5353const {
5454 validateEncoding,
5555 validateString,
56+ validateStringWellFormed,
5657 validateObject,
5758 validateUint32,
5859} = require ( 'internal/validators' ) ;
@@ -136,6 +137,7 @@ Hash.prototype.update = function update(data, encoding) {
136137
137138 if ( typeof data === 'string' ) {
138139 validateEncoding ( data , encoding ) ;
140+ validateStringWellFormed ( data ) ;
139141 } else if ( ! isArrayBufferView ( data ) ) {
140142 throw new ERR_INVALID_ARG_TYPE (
141143 'data' , [ 'string' , 'Buffer' , 'TypedArray' , 'DataView' ] , data ) ;
@@ -231,7 +233,9 @@ async function asyncDigest(algorithm, data) {
231233
232234function hash ( algorithm , input , options ) {
233235 validateString ( algorithm , 'algorithm' ) ;
234- if ( typeof input !== 'string' && ! isArrayBufferView ( input ) ) {
236+ if ( typeof input === 'string' ) {
237+ validateStringWellFormed ( input ) ;
238+ } else if ( ! isArrayBufferView ( input ) ) {
235239 throw new ERR_INVALID_ARG_TYPE ( 'input' , [ 'Buffer' , 'TypedArray' , 'DataView' , 'string' ] , input ) ;
236240 }
237241 let outputEncoding ;
0 commit comments