From dfa1836a9058c8b9b8aa5acbc57ad57ffc48f929 Mon Sep 17 00:00:00 2001 From: Joyee Cheung Date: Thu, 16 Nov 2023 23:06:46 +0100 Subject: [PATCH] src: make ModifyCodeGenerationFromStrings more robust 1. Fallback to true when the context is not (yet) initialized with the kAllowCodeGenerationFromStrings field. 2. Fallback to true when the Environment isn't assigned to the context or when the Environment cannot call into JavaScript. --- src/node_errors.cc | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/node_errors.cc b/src/node_errors.cc index 9c4ebbe4502698..758b7631f906bc 100644 --- a/src/node_errors.cc +++ b/src/node_errors.cc @@ -616,8 +616,18 @@ v8::ModifyCodeGenerationFromStringsResult ModifyCodeGenerationFromStrings( bool is_code_like) { HandleScope scope(context->GetIsolate()); + if (context->GetNumberOfEmbedderDataFields() <= + ContextEmbedderIndex::kAllowCodeGenerationFromStrings) { + // The context is not (yet) configured by Node.js for this. We don't + // have enough information to make a decision, just allow it which is + // the default. + return {true, {}}; + } Environment* env = Environment::GetCurrent(context); - if (env->source_maps_enabled()) { + if (env == nullptr) { + return {true, {}}; + } + if (env->source_maps_enabled() && env->can_call_into_js()) { // We do not expect the maybe_cache_generated_source_map to throw any more // exceptions. If it does, just ignore it. errors::TryCatchScope try_catch(env);