From: Chunling Ye Date: Tue, 23 Jan 2024 06:23:41 +0000 (+0800) Subject: [M120][WRTjs] Add flag to check context_data initialized or not X-Git-Tag: submit/tizen/20240301.160335~83 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=c85fdb25a44e976387e977a7cec89eb9561b3a43;p=platform%2Fframework%2Fweb%2Fchromium-efl.git [M120][WRTjs] Add flag to check context_data initialized or not To avoid visit the invalid uninitialized memory, need add flag to check context_data initialized or not. Reference: https://review.tizen.org/gerrit/#/c/platform/framework/web/chromium-efl/+/304681/ Change-Id: I91c9d4c45259591896dbc0f15fa7689cd51d0d0b Signed-off-by: Chunling Ye (cherry picked from commit ce59489a22b4f7b3a1e7184520a49b697c6251e5) --- diff --git a/tizen_src/chromium_impl/components/xwalk_extensions/renderer/xwalk_extension_renderer_controller.cc b/tizen_src/chromium_impl/components/xwalk_extensions/renderer/xwalk_extension_renderer_controller.cc index 1620fa4de6c7..6de062f64caa 100644 --- a/tizen_src/chromium_impl/components/xwalk_extensions/renderer/xwalk_extension_renderer_controller.cc +++ b/tizen_src/chromium_impl/components/xwalk_extensions/renderer/xwalk_extension_renderer_controller.cc @@ -132,11 +132,13 @@ void XWalkExtensionRendererController::Initialize( // static void XWalkExtensionRendererController::DidCreateScriptContext( v8::Local context) { + base::AutoLock lock(script_context_lock); // Initialize context's aligned pointer in embedder data with nullptr // This should be handled even if 'is_shutdown_' = true, otherise, // GetAlignedPointerFromEmbedderData can give invalid uninitialized memory. - base::AutoLock lock(script_context_lock); XWalkExtensionContextData::SetContextData(nullptr, context); + auto& controller = GetInstance(); + controller.context_data_initialized = true; // Skip plugin loading after application exit request. if (is_shutdown_) @@ -184,7 +186,6 @@ void XWalkExtensionRendererController::DidCreateScriptContext( "objecttools", base::WrapUnique(new ObjectToolsModule)); } - auto& controller = GetInstance(); controller.Initialize(execution_context); for (auto& it : controller.description_map_) { @@ -207,6 +208,14 @@ void XWalkExtensionRendererController::DidCreateScriptContext( void XWalkExtensionRendererController::WillReleaseScriptContext( v8::Local context) { base::AutoLock lock(script_context_lock); + // if context_data not initialize, when GetAlignedPointerFromEmbedderData + // can give invalid uninitialized memory. + auto& controller = GetInstance(); + if (!controller.context_data_initialized) { + LOG(ERROR) << "context_data not initialize!"; + return; + } + v8::Context::Scope context_scope(context); XWalkExtensionContextData::DeleteContextData(context); } diff --git a/tizen_src/chromium_impl/components/xwalk_extensions/renderer/xwalk_extension_renderer_controller.h b/tizen_src/chromium_impl/components/xwalk_extensions/renderer/xwalk_extension_renderer_controller.h index d7a878cbf3e0..b026b9f0076b 100644 --- a/tizen_src/chromium_impl/components/xwalk_extensions/renderer/xwalk_extension_renderer_controller.h +++ b/tizen_src/chromium_impl/components/xwalk_extensions/renderer/xwalk_extension_renderer_controller.h @@ -93,6 +93,8 @@ class XWalkExtensionRendererController : public mojom::XWalkExtensionRenderer { mojo::Receiver receiver_{this}; absl::optional receiver_id_; mojo::Remote browser_; + + bool context_data_initialized = false; bool offload_enabled_ = false; };