diff options
Diffstat (limited to 'src/node_crypto.cc')
-rw-r--r-- | src/node_crypto.cc | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/src/node_crypto.cc b/src/node_crypto.cc index 70da2e310e..f1c7d1796a 100644 --- a/src/node_crypto.cc +++ b/src/node_crypto.cc @@ -4317,8 +4317,9 @@ void CipherBase::Update(const FunctionCallbackInfo<Value>& args) { // Only copy the data if we have to, because it's a string if (args[0]->IsString()) { StringBytes::InlineDecoder decoder; - if (!decoder.Decode(env, args[0].As<String>(), args[1], UTF8) - .FromMaybe(false)) + enum encoding enc = ParseEncoding(env->isolate(), args[1], UTF8); + + if (decoder.Decode(env, args[0].As<String>(), enc).IsNothing()) return; r = cipher->Update(decoder.out(), decoder.size(), &out); } else { @@ -4501,8 +4502,9 @@ void Hmac::HmacUpdate(const FunctionCallbackInfo<Value>& args) { bool r = false; if (args[0]->IsString()) { StringBytes::InlineDecoder decoder; - if (decoder.Decode(env, args[0].As<String>(), args[1], UTF8) - .FromMaybe(false)) { + enum encoding enc = ParseEncoding(env->isolate(), args[1], UTF8); + + if (!decoder.Decode(env, args[0].As<String>(), enc).IsNothing()) { r = hmac->HmacUpdate(decoder.out(), decoder.size()); } } else { @@ -4626,8 +4628,9 @@ void Hash::HashUpdate(const FunctionCallbackInfo<Value>& args) { bool r = true; if (args[0]->IsString()) { StringBytes::InlineDecoder decoder; - if (!decoder.Decode(env, args[0].As<String>(), args[1], UTF8) - .FromMaybe(false)) { + enum encoding enc = ParseEncoding(env->isolate(), args[1], UTF8); + + if (decoder.Decode(env, args[0].As<String>(), enc).IsNothing()) { args.GetReturnValue().Set(false); return; } |