From dc0711e40b95a000b18ad8957e6b736d7c6624b8 Mon Sep 17 00:00:00 2001 From: chennian Date: Sat, 10 May 2025 13:39:42 +0800 Subject: [PATCH] Add feature of dlopen Signed-off-by: chennian Change-Id: I7ca42332068b264bb07152d9622ce62596e859de --- services/accesstokenmanager/BUILD.gn | 3 +++ .../cpp/include/permission/permission_manager.h | 2 +- .../cpp/src/permission/permission_manager.cpp | 16 +++++++++++----- services/common/json_parse/BUILD.gn | 4 ---- 4 files changed, 15 insertions(+), 10 deletions(-) diff --git a/services/accesstokenmanager/BUILD.gn b/services/accesstokenmanager/BUILD.gn index a77405e66..7d5f3bbd0 100644 --- a/services/accesstokenmanager/BUILD.gn +++ b/services/accesstokenmanager/BUILD.gn @@ -201,5 +201,8 @@ if (is_standard_system) { sources += [ "main/cpp/src/seccomp/sec_comp_enhance_agent.cpp" ] } + if ("${target_platform}" == "watch" || "${target_platform}" == "wearable") { + cflags_cc += [ "-DDYNAMIC_CLOSE_LIBS" ] + } } } diff --git a/services/accesstokenmanager/main/cpp/include/permission/permission_manager.h b/services/accesstokenmanager/main/cpp/include/permission/permission_manager.h index 14cd8a00a..ad1e37d9b 100644 --- a/services/accesstokenmanager/main/cpp/include/permission/permission_manager.h +++ b/services/accesstokenmanager/main/cpp/include/permission/permission_manager.h @@ -116,7 +116,7 @@ private: bool GetLocationPermissionState(AccessTokenID tokenID, std::vector& reqPermList, std::vector& permsList, int32_t apiVersion, const LocationIndex& locationIndex); bool IsPermissionStateOrFlagMatched(const PermissionStatus& stata1, const PermissionStatus& stata2); - AbilityManagerAccessLoaderInterface* GetAbilityManager(); + std::shared_ptr GetAbilityManager(); PermissionGrantEvent grantEvent_; static std::recursive_mutex mutex_; diff --git a/services/accesstokenmanager/main/cpp/src/permission/permission_manager.cpp b/services/accesstokenmanager/main/cpp/src/permission/permission_manager.cpp index e8f12d457..0ed5208fb 100644 --- a/services/accesstokenmanager/main/cpp/src/permission/permission_manager.cpp +++ b/services/accesstokenmanager/main/cpp/src/permission/permission_manager.cpp @@ -263,16 +263,18 @@ int PermissionManager::GetPermissionFlag(AccessTokenID tokenID, const std::strin return ret; } -AbilityManagerAccessLoaderInterface* PermissionManager::GetAbilityManager() +std::shared_ptr PermissionManager::GetAbilityManager() { +#ifdef DYNAMIC_CLOSE_LIBS + return std::make_shared(ABILITY_MANAGER_LIBPATH); +#endif if (abilityManagerLoader_ == nullptr) { std::lock_guard lock(abilityManagerMutex_); if (abilityManagerLoader_ == nullptr) { abilityManagerLoader_ = std::make_shared(ABILITY_MANAGER_LIBPATH); } } - - return abilityManagerLoader_->GetObject(); + return abilityManagerLoader_; } int32_t PermissionManager::RequestAppPermOnSetting(const HapTokenInfo& hapInfo, @@ -290,7 +292,9 @@ int32_t PermissionManager::RequestAppPermOnSetting(const HapTokenInfo& hapInfo, .callerTokenId = IPCSkeleton::GetCallingTokenID() }; - AbilityManagerAccessLoaderInterface* abilityManager = GetAbilityManager(); + std::shared_ptr abilityManagerLoader = GetAbilityManager(); + AbilityManagerAccessLoaderInterface* abilityManager = + abilityManagerLoader->GetObject(); if (abilityManager == nullptr) { LOGE(ATM_DOMAIN, ATM_TAG, "AbilityManager is nullptr!"); return AccessTokenError::ERR_SERVICE_ABNORMAL; @@ -372,7 +376,9 @@ int32_t PermissionManager::UpdateTokenPermissionState( // To notify kill process when perm is revoke if (needKill && (!isGranted && !isSecCompGrantedBefore)) { LOGI(ATM_DOMAIN, ATM_TAG, "(%{public}s) is revoked, kill process(%{public}u).", permission.c_str(), id); - AbilityManagerAccessLoaderInterface* abilityManager = GetAbilityManager(); + std::shared_ptr abilityManagerLoader = GetAbilityManager(); + AbilityManagerAccessLoaderInterface* abilityManager = + abilityManagerLoader->GetObject(); if (abilityManager == nullptr) { LOGE(ATM_DOMAIN, ATM_TAG, "AbilityManager is nullptr!"); } else if ((ret = abilityManager->KillProcessForPermissionUpdate(id)) != ERR_OK) { diff --git a/services/common/json_parse/BUILD.gn b/services/common/json_parse/BUILD.gn index 6b340009f..52a340885 100644 --- a/services/common/json_parse/BUILD.gn +++ b/services/common/json_parse/BUILD.gn @@ -98,9 +98,5 @@ ohos_shared_library("accesstoken_cjson_utils") { "c_utils:utils", "hilog:libhilog", ] - if (customization_config_policy_enable) { - cflags_cc += [ "-DCUSTOMIZATION_CONFIG_POLICY_ENABLE" ] - external_deps += [ "config_policy:configpolicy_util" ] - } } } -- Gitee