From 1c362436b750c714f8d83f4d47fe7e25d252c96b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tobias=20Nie=C3=9Fen?= Date: Sun, 30 Jul 2017 22:36:29 +0200 Subject: [PATCH] crypto: change segmentation faults to CHECKs PR-URL: https://github.com/nodejs/node/pull/14548 Fixes: https://github.com/nodejs/node/issues/14519 Reviewed-By: Anna Henningsen Reviewed-By: James M Snell Reviewed-By: Timothy Gu Reviewed-By: Colin Ihrig --- src/node_crypto.cc | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/src/node_crypto.cc b/src/node_crypto.cc index d03d8ad2f2ce8d..9f4ab846cb8b15 100644 --- a/src/node_crypto.cc +++ b/src/node_crypto.cc @@ -5424,8 +5424,13 @@ void PBKDF2(const FunctionCallbackInfo& args) { if (args[5]->IsFunction()) { obj->Set(env->ondone_string(), args[5]); - if (env->in_domain()) - obj->Set(env->domain_string(), env->domain_array()->Get(0)); + if (env->in_domain()) { + obj->Set(env->context(), + env->domain_string(), + env->domain_array()->Get(env->context(), 0).ToLocalChecked()) + .FromJust(); + } + uv_queue_work(env->event_loop(), req->work_req(), PBKDF2Request::Work, @@ -5627,8 +5632,13 @@ void RandomBytes(const FunctionCallbackInfo& args) { if (args[1]->IsFunction()) { obj->Set(env->ondone_string(), args[1]); - if (env->in_domain()) - obj->Set(env->domain_string(), env->domain_array()->Get(0)); + if (env->in_domain()) { + obj->Set(env->context(), + env->domain_string(), + env->domain_array()->Get(env->context(), 0).ToLocalChecked()) + .FromJust(); + } + uv_queue_work(env->event_loop(), req->work_req(), RandomBytesWork, @@ -5673,7 +5683,8 @@ void RandomBytesBuffer(const FunctionCallbackInfo& args) { if (env->in_domain()) { obj->Set(env->context(), env->domain_string(), - env->domain_array()->Get(0)).FromJust(); + env->domain_array()->Get(env->context(), 0).ToLocalChecked()) + .FromJust(); } uv_queue_work(env->event_loop(),