From 3870f596398344b9db6069206f3937652ae8de24 Mon Sep 17 00:00:00 2001 From: bigtea Date: Tue, 22 Apr 2025 17:42:29 +0800 Subject: [PATCH] Add accesstoken_configer Signed-off-by: bigtea --- services/accesstokenmanager/BUILD.gn | 1 + .../permission/temp_permission_observer.h | 2 - .../include/service/accesstoken_configer.h | 42 ++++++ .../service/accesstoken_manager_service.h | 8 -- .../permission/temp_permission_observer.cpp | 16 +-- .../cpp/src/service/accesstoken_configer.cpp | 136 ++++++++++++++++++ .../service/accesstoken_manager_service.cpp | 102 ++----------- .../accesstokenmanager/test/coverage/BUILD.gn | 1 + .../accesstokenmanager/test/mock/BUILD.gn | 1 + .../accesstokenmanager/test/unittest/BUILD.gn | 1 + .../json_parse/src/json_parse_loader.cpp | 57 ++++---- .../accesstoken/access_token_service_fuzz.gni | 1 + 12 files changed, 232 insertions(+), 136 deletions(-) create mode 100644 services/accesstokenmanager/main/cpp/include/service/accesstoken_configer.h create mode 100644 services/accesstokenmanager/main/cpp/src/service/accesstoken_configer.cpp diff --git a/services/accesstokenmanager/BUILD.gn b/services/accesstokenmanager/BUILD.gn index 6ef246714..9a5981d28 100644 --- a/services/accesstokenmanager/BUILD.gn +++ b/services/accesstokenmanager/BUILD.gn @@ -90,6 +90,7 @@ if (is_standard_system) { "main/cpp/src/permission/permission_validator.cpp", "main/cpp/src/permission/short_grant_manager.cpp", "main/cpp/src/permission/temp_permission_observer.cpp", + "main/cpp/src/service/accesstoken_configer.cpp", "main/cpp/src/service/accesstoken_manager_service.cpp", "main/cpp/src/token/accesstoken_id_manager.cpp", "main/cpp/src/token/accesstoken_info_manager.cpp", diff --git a/services/accesstokenmanager/main/cpp/include/permission/temp_permission_observer.h b/services/accesstokenmanager/main/cpp/include/permission/temp_permission_observer.h index c910d555d..89b158f4f 100644 --- a/services/accesstokenmanager/main/cpp/include/permission/temp_permission_observer.h +++ b/services/accesstokenmanager/main/cpp/include/permission/temp_permission_observer.h @@ -100,7 +100,6 @@ public: bool FindContinuousTask(AccessTokenID tokenID); #ifdef EVENTHANDLER_ENABLE void InitEventHandler(); - void SetCancelTime(int32_t cancelTime); #endif bool DelayRevokePermission(AccessToken::AccessTokenID tokenId, const std::string& taskName); bool CancleTaskOfPermissionRevoking(const std::string& taskName); @@ -120,7 +119,6 @@ private: std::shared_ptr eventHandler_; std::mutex eventHandlerLock_; #endif - int32_t cancelTimes_; std::mutex tempPermissionMutex_; std::map> tempPermTokenMap_; diff --git a/services/accesstokenmanager/main/cpp/include/service/accesstoken_configer.h b/services/accesstokenmanager/main/cpp/include/service/accesstoken_configer.h new file mode 100644 index 000000000..5b59a136f --- /dev/null +++ b/services/accesstokenmanager/main/cpp/include/service/accesstoken_configer.h @@ -0,0 +1,42 @@ +/* + * Copyright (c) 2025 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef ACCESSTOKEN_CONFIGER_H +#define ACCESSTOKEN_CONFIGER_H + +#include +#include +#include "json_parse_loader.h" + +namespace OHOS { +namespace Security { +namespace AccessToken { + +class AccessTokenConfiger { +public: + static AccessTokenConfiger& GetInstance(); + const AccessTokenServiceConfig& GetConfig(); + +private: + AccessTokenConfiger(); + + void SetFlagIfNeed(const AccessTokenServiceConfig& atConfig, uint32_t& parseConfigFlag); + AccessTokenServiceConfig config_; +}; + +} // namespace AccessToken +} // namespace Security +} // namespace OHOS +#endif // ACCESSTOKEN_CONFIGER_H \ No newline at end of file diff --git a/services/accesstokenmanager/main/cpp/include/service/accesstoken_manager_service.h b/services/accesstokenmanager/main/cpp/include/service/accesstoken_manager_service.h index 5ab5562ba..9112c9e26 100644 --- a/services/accesstokenmanager/main/cpp/include/service/accesstoken_manager_service.h +++ b/services/accesstokenmanager/main/cpp/include/service/accesstoken_manager_service.h @@ -126,8 +126,6 @@ public: private: void GetValidConfigFilePathList(std::vector& pathList); bool GetConfigGrantValueFromFile(std::string& fileContent); - void SetFlagIfNeed(const AccessTokenServiceConfig& atConfig, int32_t& cancelTime, uint32_t& parseConfigFlag); - void GetConfigValue(uint32_t& parseConfigFlag); bool Initialize(); void AccessTokenServiceParamSet() const; PermissionOper GetPermissionsState(AccessTokenID tokenID, std::vector& reqPermList); @@ -138,12 +136,6 @@ private: int32_t errorCode); ServiceRunningState state_; - std::string grantBundleName_; - std::string grantAbilityName_; - std::string grantServiceAbilityName_; - std::string permStateAbilityName_; - std::string globalSwitchAbilityName_; - std::string applicationSettingAbilityName_; bool IsPrivilegedCalling() const; bool IsAccessTokenCalling(); diff --git a/services/accesstokenmanager/main/cpp/src/permission/temp_permission_observer.cpp b/services/accesstokenmanager/main/cpp/src/permission/temp_permission_observer.cpp index 6536aa1c3..a19f4e50e 100644 --- a/services/accesstokenmanager/main/cpp/src/permission/temp_permission_observer.cpp +++ b/services/accesstokenmanager/main/cpp/src/permission/temp_permission_observer.cpp @@ -19,6 +19,7 @@ #include "access_token_error.h" #include "accesstoken_info_manager.h" #include "accesstoken_common_log.h" +#include "accesstoken_configer.h" #include "libraryloader.h" #include "app_manager_access_client.h" #ifdef BGTASKMGR_CONTINUOUS_TASK_ENABLE @@ -41,7 +42,6 @@ static constexpr int32_t ROOT_UID = 0; static constexpr int32_t FOREGROUND_FLAG = 0; static constexpr int32_t FORMS_FLAG = 1; static constexpr int32_t CONTINUOUS_TASK_FLAG = 2; -static constexpr int32_t DEFAULT_CANCLE_MILLISECONDS = 10 * 1000; // 10s std::recursive_mutex g_instanceMutex; static const std::vector g_tempPermission = { "ohos.permission.READ_PASTEBOARD", @@ -214,7 +214,7 @@ void PermissionAppManagerDeathCallback::NotifyAppManagerDeath() TempPermissionObserver::GetInstance().OnAppMgrRemoteDiedHandle(); } -TempPermissionObserver::TempPermissionObserver() : cancelTimes_(DEFAULT_CANCLE_MILLISECONDS) +TempPermissionObserver::TempPermissionObserver() {} TempPermissionObserver::~TempPermissionObserver() @@ -633,7 +633,8 @@ bool TempPermissionObserver::DelayRevokePermission(AccessToken::AccessTokenID to TempPermissionObserver::GetInstance().RevokeAllTempPermission(tokenID); LOGI(ATM_DOMAIN, ATM_TAG, "Token: %{public}d, delay revoke permission end", tokenID); }); - eventHandler->ProxyPostTask(delayed, taskName, cancelTimes_); + const AccessTokenServiceConfig& config = AccessTokenConfiger::GetInstance().GetConfig(); + eventHandler->ProxyPostTask(delayed, taskName, config.cancelTime); return true; #else LOGW(ATM_DOMAIN, ATM_TAG, "Eventhandler is not existed"); @@ -658,15 +659,6 @@ bool TempPermissionObserver::CancleTaskOfPermissionRevoking(const std::string& t return false; #endif } - -void TempPermissionObserver::SetCancelTime(int32_t cancelTime) -{ - if (cancelTime != 0) { - cancelTimes_ = cancelTime; - } - - LOGI(ATM_DOMAIN, ATM_TAG, "CancelTimes_ is %{public}d.", cancelTimes_); -} } // namespace AccessToken } // namespace Security } // namespace OHOS diff --git a/services/accesstokenmanager/main/cpp/src/service/accesstoken_configer.cpp b/services/accesstokenmanager/main/cpp/src/service/accesstoken_configer.cpp new file mode 100644 index 000000000..9ea4476a6 --- /dev/null +++ b/services/accesstokenmanager/main/cpp/src/service/accesstoken_configer.cpp @@ -0,0 +1,136 @@ +/* + * Copyright (c) 2025 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "accesstoken_configer.h" + +#include +#include +#include "accesstoken_common_log.h" +#include "libraryloader.h" +#include "hisysevent.h" +#include "hisysevent_adapter.h" + +namespace OHOS { +namespace Security { +namespace AccessToken { +namespace { +std::recursive_mutex g_instanceMutex; +constexpr const char* GRANT_ABILITY_BUNDLE_NAME = "com.ohos.permissionmanager"; +constexpr const char* GRANT_ABILITY_ABILITY_NAME = "com.ohos.permissionmanager.GrantAbility"; +constexpr const char* PERMISSION_STATE_SHEET_ABILITY_NAME = "com.ohos.permissionmanager.PermissionStateSheetAbility"; +constexpr const char* GLOBAL_SWITCH_SHEET_ABILITY_NAME = "com.ohos.permissionmanager.GlobalSwitchSheetAbility"; +static constexpr int32_t DEFAULT_CANCLE_MILLISECONDS = 10 * 1000; // 10s +constexpr const char* APPLICATION_SETTING_ABILITY_NAME = "com.ohos.permissionmanager.MainAbility"; + +constexpr uint32_t BITMAP_INDEX_1 = 1; +constexpr uint32_t BITMAP_INDEX_2 = 2; +constexpr uint32_t BITMAP_INDEX_3 = 3; +constexpr uint32_t BITMAP_INDEX_4 = 4; +constexpr uint32_t BITMAP_INDEX_5 = 5; +constexpr uint32_t BITMAP_INDEX_6 = 6; +} + +AccessTokenConfiger& AccessTokenConfiger::GetInstance() +{ + static AccessTokenConfiger* instance = nullptr; + if (instance == nullptr) { + std::lock_guard lock_l(g_instanceMutex); + if (instance == nullptr) { + instance = new AccessTokenConfiger(); + } + } + return *instance; +} + +static void SetDefaultConfigValue(AccessTokenServiceConfig& config) +{ + config.grantBundleName = GRANT_ABILITY_BUNDLE_NAME; + config.grantAbilityName = GRANT_ABILITY_ABILITY_NAME; + config.grantServiceAbilityName = GRANT_ABILITY_ABILITY_NAME; + config.permStateAbilityName = PERMISSION_STATE_SHEET_ABILITY_NAME; + config.globalSwitchAbilityName = GLOBAL_SWITCH_SHEET_ABILITY_NAME; + config.cancelTime = DEFAULT_CANCLE_MILLISECONDS; + config.applicationSettingAbilityName = APPLICATION_SETTING_ABILITY_NAME; +} + +AccessTokenConfiger::AccessTokenConfiger() +{ + SetDefaultConfigValue(config_); + LibraryLoader loader(CONFIG_PARSE_LIBPATH); + ConfigPolicyLoaderInterface* policy = loader.GetObject(); + if (policy == nullptr) { + LOGE(ATM_DOMAIN, ATM_TAG, "Dlopen libaccesstoken_json_parse failed."); + return; + } + AccessTokenConfigValue config; + uint32_t parseConfigFlag = 0; + if (policy->GetConfigValue(ServiceType::ACCESSTOKEN_SERVICE, config)) { + SetFlagIfNeed(config.atConfig, parseConfigFlag); + } + + int32_t pid = getpid(); + HiSysEventWrite(HiviewDFX::HiSysEvent::Domain::ACCESS_TOKEN, "ACCESSTOKEN_SERVICE_START", + HiviewDFX::HiSysEvent::EventType::STATISTIC, "PID", pid, "PARSE_CONFIG_FLAG", parseConfigFlag); + + LOGI(ATM_DOMAIN, ATM_TAG, "GrantBundleName is %{public}s, grantAbilityName is %{public}s, " + "grantServiceAbilityName is %{public}s, permStateAbilityName is %{public}s, " + "globalSwitchAbilityName is %{public}s, cancelTime is %{public}d, applicationSettingAbilityName is %{public}s.", + config_.grantBundleName.c_str(), config_.grantAbilityName.c_str(), + config_.grantServiceAbilityName.c_str(), config_.permStateAbilityName.c_str(), + config_.globalSwitchAbilityName.c_str(), config_.cancelTime, + config_.applicationSettingAbilityName.c_str()); +} + +void AccessTokenConfiger::SetFlagIfNeed(const AccessTokenServiceConfig& atConfig, uint32_t& parseConfigFlag) +{ + parseConfigFlag = 0; + // set value from config + if (!atConfig.grantBundleName.empty()) { + config_.grantBundleName = atConfig.grantBundleName; + parseConfigFlag = 0x1; + } + if (!atConfig.grantAbilityName.empty()) { + config_.grantAbilityName = atConfig.grantAbilityName; + parseConfigFlag |= 0x1 << BITMAP_INDEX_1; + } + if (!atConfig.grantServiceAbilityName.empty()) { + config_.grantServiceAbilityName = atConfig.grantServiceAbilityName; + parseConfigFlag |= 0x1 << BITMAP_INDEX_2; + } + if (!atConfig.permStateAbilityName.empty()) { + config_.permStateAbilityName = atConfig.permStateAbilityName; + parseConfigFlag |= 0x1 << BITMAP_INDEX_3; + } + if (!atConfig.globalSwitchAbilityName.empty()) { + config_.globalSwitchAbilityName = atConfig.globalSwitchAbilityName; + parseConfigFlag |= 0x1 << BITMAP_INDEX_4; + } + if (atConfig.cancelTime != 0) { + config_.cancelTime = atConfig.cancelTime; + parseConfigFlag |= 0x1 << BITMAP_INDEX_5; + } + if (!atConfig.applicationSettingAbilityName.empty()) { + config_.applicationSettingAbilityName = atConfig.applicationSettingAbilityName; + parseConfigFlag |= 0x1 << BITMAP_INDEX_6; + } +} + +const AccessTokenServiceConfig& AccessTokenConfiger::GetConfig() +{ + return config_; +} +} // namespace AccessToken +} // namespace Security +} // namespace OHOS \ No newline at end of file diff --git a/services/accesstokenmanager/main/cpp/src/service/accesstoken_manager_service.cpp b/services/accesstokenmanager/main/cpp/src/service/accesstoken_manager_service.cpp index ccdf0fff3..36d89a963 100644 --- a/services/accesstokenmanager/main/cpp/src/service/accesstoken_manager_service.cpp +++ b/services/accesstokenmanager/main/cpp/src/service/accesstoken_manager_service.cpp @@ -21,6 +21,7 @@ #include "access_token_db.h" #include "access_token_error.h" #include "accesstoken_common_log.h" +#include "accesstoken_configer.h" #include "accesstoken_dfx_define.h" #include "accesstoken_id_manager.h" #include "accesstoken_info_manager.h" @@ -62,11 +63,6 @@ namespace { static const char* ACCESS_TOKEN_SERVICE_INIT_KEY = "accesstoken.permission.init"; constexpr int32_t ERROR = -1; constexpr int TWO_ARGS = 2; -const char* GRANT_ABILITY_BUNDLE_NAME = "com.ohos.permissionmanager"; -const char* GRANT_ABILITY_ABILITY_NAME = "com.ohos.permissionmanager.GrantAbility"; -const char* PERMISSION_STATE_SHEET_ABILITY_NAME = "com.ohos.permissionmanager.PermissionStateSheetAbility"; -const char* GLOBAL_SWITCH_SHEET_ABILITY_NAME = "com.ohos.permissionmanager.GlobalSwitchSheetAbility"; -const char* APPLICATION_SETTING_ABILITY_NAME = "com.ohos.permissionmanager.MainAbility"; const char* DEVELOPER_MODE_STATE = "const.security.developermode.state"; const std::string MANAGE_HAP_TOKENID_PERMISSION = "ohos.permission.MANAGE_HAP_TOKENID"; @@ -84,13 +80,6 @@ static constexpr int32_t SA_ID_ACCESSTOKEN_MANAGER_SERVICE = 3503; constexpr uint32_t TIMEOUT = 40; // 40s thread_local int32_t g_timerId = 0; #endif // HICOLLIE_ENABLE - -constexpr uint32_t BITMAP_INDEX_1 = 1; -constexpr uint32_t BITMAP_INDEX_2 = 2; -constexpr uint32_t BITMAP_INDEX_3 = 3; -constexpr uint32_t BITMAP_INDEX_4 = 4; -constexpr uint32_t BITMAP_INDEX_5 = 5; -constexpr uint32_t BITMAP_INDEX_6 = 6; } const bool REGISTER_RESULT = @@ -274,9 +263,10 @@ int32_t AccessTokenManagerService::GetSelfPermissionsState(std::vector(); - if (policy == nullptr) { - LOGE(ATM_DOMAIN, ATM_TAG, "Dlopen libaccesstoken_json_parse failed."); - return; - } - AccessTokenConfigValue value; - if (policy->GetConfigValue(ServiceType::ACCESSTOKEN_SERVICE, value)) { - SetFlagIfNeed(value.atConfig, cancelTime, parseConfigFlag); - } - TempPermissionObserver::GetInstance().SetCancelTime(cancelTime); - LOGI(ATM_DOMAIN, ATM_TAG, "GrantBundleName_ is %{public}s, grantAbilityName_ is %{public}s, " - "grantServiceAbilityName_ is %{public}s, permStateAbilityName_ is %{public}s, " - "globalSwitchAbilityName_ is %{public}s, applicationSettingAbilityName_ is %{public}s.", - grantBundleName_.c_str(), grantAbilityName_.c_str(), grantServiceAbilityName_.c_str(), - permStateAbilityName_.c_str(), globalSwitchAbilityName_.c_str(), applicationSettingAbilityName_.c_str()); -} - int32_t AccessTokenManagerService::GetKernelPermissions( AccessTokenID tokenId, std::vector& kernelPermIdlList) { @@ -1375,17 +1305,13 @@ bool AccessTokenManagerService::Initialize() uint32_t dlpSize = 0; AccessTokenInfoManager::GetInstance().Init(hapSize, nativeSize, pefDefSize, dlpSize); -#ifdef EVENTHANDLER_ENABLE - TempPermissionObserver::GetInstance().InitEventHandler(); - ShortGrantManager::GetInstance().InitEventHandler(); -#endif AccessTokenDfxInfo dfxInfo; dfxInfo.pid = getpid(); dfxInfo.hapSize = hapSize; dfxInfo.nativeSize = nativeSize; dfxInfo.permDefSize = pefDefSize; dfxInfo.dlpSize = dlpSize; - GetConfigValue(dfxInfo.parseConfigFlag); + dfxInfo.parseConfigFlag = 0; ReportSysEventServiceStart(dfxInfo); LOGI(ATM_DOMAIN, ATM_TAG, "Initialize success"); diff --git a/services/accesstokenmanager/test/coverage/BUILD.gn b/services/accesstokenmanager/test/coverage/BUILD.gn index ecc13840b..a51223240 100644 --- a/services/accesstokenmanager/test/coverage/BUILD.gn +++ b/services/accesstokenmanager/test/coverage/BUILD.gn @@ -35,6 +35,7 @@ accesstoken_manager_service_source = [ "${access_token_path}/services/accesstokenmanager/main/cpp/src/permission/short_grant_manager.cpp", "${access_token_path}/services/accesstokenmanager/main/cpp/src/permission/permission_validator.cpp", "${access_token_path}/services/accesstokenmanager/main/cpp/src/permission/temp_permission_observer.cpp", + "${access_token_path}/services/accesstokenmanager/main/cpp/src/service/accesstoken_configer.cpp", "${access_token_path}/services/accesstokenmanager/main/cpp/src/service/accesstoken_manager_service.cpp", "${access_token_path}/services/accesstokenmanager/main/cpp/src/token/accesstoken_id_manager.cpp", "${access_token_path}/services/accesstokenmanager/main/cpp/src/token/accesstoken_info_manager.cpp", diff --git a/services/accesstokenmanager/test/mock/BUILD.gn b/services/accesstokenmanager/test/mock/BUILD.gn index 4accc53c0..e007f34fd 100644 --- a/services/accesstokenmanager/test/mock/BUILD.gn +++ b/services/accesstokenmanager/test/mock/BUILD.gn @@ -35,6 +35,7 @@ accesstoken_manager_service_source = [ "${access_token_path}/services/accesstokenmanager/main/cpp/src/permission/short_grant_manager.cpp", "${access_token_path}/services/accesstokenmanager/main/cpp/src/permission/permission_validator.cpp", "${access_token_path}/services/accesstokenmanager/main/cpp/src/permission/temp_permission_observer.cpp", + "${access_token_path}/services/accesstokenmanager/main/cpp/src/service/accesstoken_configer.cpp", "${access_token_path}/services/accesstokenmanager/main/cpp/src/service/accesstoken_manager_service.cpp", "${access_token_path}/services/accesstokenmanager/main/cpp/src/token/accesstoken_id_manager.cpp", "${access_token_path}/services/accesstokenmanager/main/cpp/src/token/accesstoken_info_manager.cpp", diff --git a/services/accesstokenmanager/test/unittest/BUILD.gn b/services/accesstokenmanager/test/unittest/BUILD.gn index 1074f025e..5b985308f 100644 --- a/services/accesstokenmanager/test/unittest/BUILD.gn +++ b/services/accesstokenmanager/test/unittest/BUILD.gn @@ -35,6 +35,7 @@ accesstoken_manager_service_source = [ "${access_token_path}/services/accesstokenmanager/main/cpp/src/permission/short_grant_manager.cpp", "${access_token_path}/services/accesstokenmanager/main/cpp/src/permission/permission_validator.cpp", "${access_token_path}/services/accesstokenmanager/main/cpp/src/permission/temp_permission_observer.cpp", + "${access_token_path}/services/accesstokenmanager/main/cpp/src/service/accesstoken_configer.cpp", "${access_token_path}/services/accesstokenmanager/main/cpp/src/service/accesstoken_manager_service.cpp", "${access_token_path}/services/accesstokenmanager/main/cpp/src/token/accesstoken_id_manager.cpp", "${access_token_path}/services/accesstokenmanager/main/cpp/src/token/accesstoken_info_manager.cpp", diff --git a/services/common/json_parse/src/json_parse_loader.cpp b/services/common/json_parse/src/json_parse_loader.cpp index 2998452af..913a5fd79 100644 --- a/services/common/json_parse/src/json_parse_loader.cpp +++ b/services/common/json_parse/src/json_parse_loader.cpp @@ -161,60 +161,65 @@ void ConfigPolicLoader::GetConfigFilePathList(std::vector& pathList bool GetAtCfgFromJson(const CJson* j, AccessTokenServiceConfig& a) { - if (!GetStringFromJson(j, PERMISSION_MANAGER_BUNDLE_NAME_KEY, a.grantBundleName)) { - return false; + bool flag = false; + if (GetStringFromJson(j, PERMISSION_MANAGER_BUNDLE_NAME_KEY, a.grantBundleName)) { + flag = true; } - if (!GetStringFromJson(j, GRANT_ABILITY_NAME_KEY, a.grantAbilityName)) { - return false; + if (GetStringFromJson(j, GRANT_ABILITY_NAME_KEY, a.grantAbilityName)) { + flag = true; } - if (!GetStringFromJson(j, GRANT_SERVICE_ABILITY_NAME_KEY, a.grantAbilityName)) { - return false; + if (GetStringFromJson(j, GRANT_SERVICE_ABILITY_NAME_KEY, a.grantServiceAbilityName)) { + flag = true; } - if (!GetStringFromJson(j, PERMISSION_STATE_SHEET_ABILITY_NAME_KEY, a.permStateAbilityName)) { - return false; + if (GetStringFromJson(j, PERMISSION_STATE_SHEET_ABILITY_NAME_KEY, a.permStateAbilityName)) { + flag = true; } - if (!GetStringFromJson(j, GLOBAL_SWITCH_SHEET_ABILITY_NAME_KEY, a.globalSwitchAbilityName)) { - return false; + if (GetStringFromJson(j, GLOBAL_SWITCH_SHEET_ABILITY_NAME_KEY, a.globalSwitchAbilityName)) { + flag = true; } - if (!GetIntFromJson(j, TEMP_PERM_CANCLE_TIME_KEY, a.cancelTime)) { - return false; + if (GetIntFromJson(j, TEMP_PERM_CANCLE_TIME_KEY, a.cancelTime)) { + flag = true; } - GetStringFromJson(j, APPLICATION_SETTING_ABILITY_NAME_KEY, a.applicationSettingAbilityName); - return true; + if (GetStringFromJson(j, APPLICATION_SETTING_ABILITY_NAME_KEY, a.applicationSettingAbilityName)) { + flag = true; + } + return flag; } bool GetPrivacyCfgFromJson(const CJson* j, PrivacyServiceConfig& p) { - if (!GetIntFromJson(j, RECORD_SIZE_MAXIMUM_KEY, p.sizeMaxImum)) { - return false; + bool flag = false; + if (GetIntFromJson(j, RECORD_SIZE_MAXIMUM_KEY, p.sizeMaxImum)) { + flag = true; } - if (!GetIntFromJson(j, RECORD_AGING_TIME_KEY, p.agingTime)) { - return false; + if (GetIntFromJson(j, RECORD_AGING_TIME_KEY, p.agingTime)) { + flag = true; } - if (!GetStringFromJson(j, GLOBAL_DIALOG_BUNDLE_NAME_KEY, p.globalDialogBundleName)) { - return false; + if (GetStringFromJson(j, GLOBAL_DIALOG_BUNDLE_NAME_KEY, p.globalDialogBundleName)) { + flag = true; } - if (!GetStringFromJson(j, GLOBAL_DIALOG_ABILITY_NAME_KEY, p.globalDialogAbilityName)) { - return false; + if (GetStringFromJson(j, GLOBAL_DIALOG_ABILITY_NAME_KEY, p.globalDialogAbilityName)) { + flag = true; } - return true; + return flag; } bool GetTokenSyncCfgFromJson(const CJson* j, TokenSyncServiceConfig& t) { - if (!GetIntFromJson(j, SEND_REQUEST_REPEAT_TIMES_KEY, t.sendRequestRepeatTimes)) { - return false; + bool flag = false; + if (GetIntFromJson(j, SEND_REQUEST_REPEAT_TIMES_KEY, t.sendRequestRepeatTimes)) { + flag = true; } - return true; + return flag; } bool ConfigPolicLoader::GetConfigValueFromFile(const ServiceType& type, const std::string& fileContent, diff --git a/test/fuzztest/services/accesstoken/access_token_service_fuzz.gni b/test/fuzztest/services/accesstoken/access_token_service_fuzz.gni index c0406e4aa..fb362c61a 100644 --- a/test/fuzztest/services/accesstoken/access_token_service_fuzz.gni +++ b/test/fuzztest/services/accesstoken/access_token_service_fuzz.gni @@ -100,6 +100,7 @@ access_token_sources = [ "${access_token_path}/services/accesstokenmanager/main/cpp/src/permission/permission_validator.cpp", "${access_token_path}/services/accesstokenmanager/main/cpp/src/permission/short_grant_manager.cpp", "${access_token_path}/services/accesstokenmanager/main/cpp/src/permission/temp_permission_observer.cpp", + "${access_token_path}/services/accesstokenmanager/main/cpp/src/service/accesstoken_configer.cpp", "${access_token_path}/services/accesstokenmanager/main/cpp/src/service/accesstoken_manager_service.cpp", "${access_token_path}/services/accesstokenmanager/main/cpp/src/token/accesstoken_id_manager.cpp", "${access_token_path}/services/accesstokenmanager/main/cpp/src/token/accesstoken_info_manager.cpp", -- Gitee