From 40da82b4653ae0349d796a9e075a7c5f5c013b1e Mon Sep 17 00:00:00 2001 From: fuyongyuan Date: Wed, 20 Aug 2025 17:33:58 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=A4=A9=E7=BD=91=E7=89=88?= =?UTF-8?q?=E6=9C=AC=E4=B8=AD=EF=BC=8Ccrashpad=E5=8A=A0=E8=BD=BD=E7=9A=84s?= =?UTF-8?q?o=E8=B7=AF=E5=BE=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config.gni | 3 ++- ohos_adapter/BUILD.gn | 5 +++++ ohos_nweb/BUILD.gn | 7 +++++++ ohos_nweb/src/nweb_crashpad_handler_main.cpp | 11 ++++++++--- 4 files changed, 22 insertions(+), 4 deletions(-) diff --git a/config.gni b/config.gni index 14dbc04ac..3085542b6 100644 --- a/config.gni +++ b/config.gni @@ -105,4 +105,5 @@ webview_engine_so = "libarkweb_engine.so" webview_app_hap_path = "/system/app/ArkWeb/ArkWebCore.hap" webview_app_hap_path2 = "/system/app/${webview_package_name}/ArkWebCore.hap" -legacy_webview_sandbox_lib_path = "/data/storage/el1/bundle/arkweblegacy/libs/${target_cpu}" \ No newline at end of file +legacy_webview_sandbox_lib_path = "/data/storage/el1/bundle/arkweblegacy/libs/${target_cpu}" +asan_webview_sandbox_lib_path = "/data/storage/el1/bundle/arkwebcore_asan/libs/${target_cpu}" \ No newline at end of file diff --git a/ohos_adapter/BUILD.gn b/ohos_adapter/BUILD.gn index 1901b59f4..f2bda40cf 100644 --- a/ohos_adapter/BUILD.gn +++ b/ohos_adapter/BUILD.gn @@ -59,6 +59,11 @@ ohos_shared_library("nweb_ohos_adapter") { "WEBVIEW_SANDBOX_PATH=\"${webview_sandbox_path}\"", ] + if (use_hwasan) { + defines += [ + "WEBVIEW_SANDBOX_LIB_PATH_ASAN=\"${asan_webview_sandbox_lib_path}\"", + ] + } sources = [ "aafwk_adapter/src/aafwk_app_mgr_client_adapter_impl.cpp", "aafwk_adapter/src/aafwk_browser_client_adapter_impl.cpp", diff --git a/ohos_nweb/BUILD.gn b/ohos_nweb/BUILD.gn index 0ca315a0a..1ccc21a3e 100644 --- a/ohos_nweb/BUILD.gn +++ b/ohos_nweb/BUILD.gn @@ -37,6 +37,13 @@ defines += [ "WEBVIEW_ENGINE_SO=\"${webview_engine_so}\"", ] +if (use_hwasan) { + defines += [ + "IS_ASAN", + "WEBVIEW_SANDBOX_LIB_PATH_ASAN=\"${asan_webview_sandbox_lib_path}\"", + ] +} + config("nweb_config") { include_dirs = [ "${target_gen_dir}/include" ] include_dirs += [ "include" ] diff --git a/ohos_nweb/src/nweb_crashpad_handler_main.cpp b/ohos_nweb/src/nweb_crashpad_handler_main.cpp index abd52ded0..c59254cde 100644 --- a/ohos_nweb/src/nweb_crashpad_handler_main.cpp +++ b/ohos_nweb/src/nweb_crashpad_handler_main.cpp @@ -48,17 +48,22 @@ std::optional GetEngineType(int argc, char* argv[]) { int main(int argc, char* argv[]) { std::string libCrashpadHandler; + std::string webPath = WEBVIEW_SANDBOX_LIB_PATH; +#if defined(IS_ASAN) && defined(webview_arm64) + if (access(std::string(WEBVIEW_SANDBOX_LIB_PATH_ASAN).c_str(), F_OK) == 0) { + webPath = WEBVIEW_SANDBOX_LIB_PATH_ASAN; + } +#endif if (auto engineType = GetEngineType(argc, argv); engineType.has_value() && engineType.value() == "LEGACY") { libCrashpadHandler = std::string(LEGACY_WEBVIEW_SANDBOX_LIB_PATH) + "/" + std::string(WEBVIEW_CRASHPAD_HANDLER_SO); } else { - libCrashpadHandler = std::string(WEBVIEW_SANDBOX_LIB_PATH) + "/" - + std::string(WEBVIEW_CRASHPAD_HANDLER_SO); + libCrashpadHandler = webPath + "/" + std::string(WEBVIEW_CRASHPAD_HANDLER_SO); } Dl_namespace dlns; dlns_init(&dlns, "nweb_ns"); - dlns_create(&dlns, std::string(WEBVIEW_SANDBOX_LIB_PATH).c_str()); + dlns_create(&dlns, webPath.c_str()); Dl_namespace ndkns; dlns_get("ndk", &ndkns); -- Gitee