From 9651d292355c004c14ae4ded9fc0fe812847bebf Mon Sep 17 00:00:00 2001 From: sunjiakun Date: Fri, 20 Dec 2024 10:38:01 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8A=A8=E6=80=81=E5=8A=A0=E8=BD=BDso?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: sunjiakun --- bundle.json | 1 - services/bundlemgr/BUILD.gn | 1 - services/bundlemgr/src/verify/verify_util.cpp | 23 +++++++++++++++---- 3 files changed, 19 insertions(+), 6 deletions(-) diff --git a/bundle.json b/bundle.json index 3b88be00dc..48e20d06e2 100644 --- a/bundle.json +++ b/bundle.json @@ -78,7 +78,6 @@ "window_manager", "distributed_bundle_framework", "relational_store", - "runtime_core", "dlp_permission_service", "code_signature", "udmf", diff --git a/services/bundlemgr/BUILD.gn b/services/bundlemgr/BUILD.gn index dd364ad491..6e5a18b370 100644 --- a/services/bundlemgr/BUILD.gn +++ b/services/bundlemgr/BUILD.gn @@ -440,7 +440,6 @@ ohos_shared_library("libbms") { if (verify_abc_enabled) { defines += [ "VERIFY_ABC_ENABLED" ] - external_deps += [ "runtime_core:libarkverifier" ] } if (check_eldir_enabled) { diff --git a/services/bundlemgr/src/verify/verify_util.cpp b/services/bundlemgr/src/verify/verify_util.cpp index 433cd3be36..26ab87a3f7 100644 --- a/services/bundlemgr/src/verify/verify_util.cpp +++ b/services/bundlemgr/src/verify/verify_util.cpp @@ -16,17 +16,32 @@ #include "verify_util.h" #include "app_log_wrapper.h" -#ifdef VERIFY_ABC_ENABLED -#include "verify.h" -#endif namespace OHOS { namespace AppExecFwk { +using VerifyAbcFunc = bool (*)(const std::string&); + bool VerifyUtil::VerifyAbc(const std::string &abcPath) { #ifdef VERIFY_ABC_ENABLED APP_LOGD("Verify %{private}s", abcPath.c_str()); - return Verify(abcPath); + void* handle = dlopen("system/lib64/libarkverifier.so", RTLD_NOW | RTLD_GLOBAL); + if (!handle) { + handle = dlopen("system/lib/libarkverifier.so", RTLD_NOW | RTLD_GLOBAL); + } + if (!handle) { + APP_LOGE("get verifyAbc dlopen failed : %{public}s", dlerror()); + return false; + } + VerifyAbcFunc verifyAbcFunc = reinterpret_cast(dlsym(handle, "Verify")); + if (!verifyAbcFunc) { + APP_LOGE("get verifyAbc dlsym failed : %{public}s", dlerror()); + dlclose(handle); + return false; + } + auto ret = verifyAbcFunc(abcPath); + dlclose(handle); + return ret; #else APP_LOGI("VERIFY_ABC_ENABLED is false"); return false; -- Gitee