diff --git a/src/crypto/crypto_common.cc b/src/crypto/crypto_common.cc index 86da106306f76a..f830da2cfba18a 100644 --- a/src/crypto/crypto_common.cc +++ b/src/crypto/crypto_common.cc @@ -1082,17 +1082,26 @@ static MaybeLocal GetX509NameObject(Environment* env, X509* cert) { // change here without breaking things. Note that this creates nested data // structures, yet still does not allow representing Distinguished Names // accurately. - if (result->HasOwnProperty(env->context(), v8_name).ToChecked()) { - Local accum = - result->Get(env->context(), v8_name).ToLocalChecked(); + bool multiple; + if (!result->HasOwnProperty(env->context(), v8_name).To(&multiple)) { + return MaybeLocal(); + } else if (multiple) { + Local accum; + if (!result->Get(env->context(), v8_name).ToLocal(&accum)) { + return MaybeLocal(); + } if (!accum->IsArray()) { accum = Array::New(env->isolate(), &accum, 1); - result->Set(env->context(), v8_name, accum).Check(); + if (result->Set(env->context(), v8_name, accum).IsNothing()) { + return MaybeLocal(); + } } Local array = accum.As(); - array->Set(env->context(), array->Length(), v8_value).Check(); - } else { - result->Set(env->context(), v8_name, v8_value).Check(); + if (array->Set(env->context(), array->Length(), v8_value).IsNothing()) { + return MaybeLocal(); + } + } else if (result->Set(env->context(), v8_name, v8_value).IsNothing()) { + return MaybeLocal(); } }