diff --git a/services/accesstokenmanager/BUILD.gn b/services/accesstokenmanager/BUILD.gn index 6ef24671421e08cdcf8761d3655ed07c502d3019..9a5981d28962627b8eee287204e6c65b1c4dacb4 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 c910d555d538cf57aab9b1a7002294b71ea2a276..89b158f4f804f8455bd0cd23540ceaed42f6c26b 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 0000000000000000000000000000000000000000..5b59a136f7b67b5391cd90d1faa4155bd54bf4e0 --- /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 5ab5562baa4e9948bfc4fb0621f4fc8c0488d8c0..9112c9e26b9068357cabd254d694e7d378813e21 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 6536aa1c34a04450d96c62efcede0850028454d4..a19f4e50e10803983d0dd50221747d62bfa26939 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 0000000000000000000000000000000000000000..9ea4476a603bb6f4249c2be9eff0d0a49fd3346b --- /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 ccdf0fff3f08d0d1fed18c31dcd98fa0e3312ddf..36d89a963bc139cc0c3b488f02785eb7c8fcca40 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 ecc13840baaf0135a9f4096f9a1b88a2d4c635db..a51223240ee70a592ba29756b251d923e076ad38 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 4accc53c026397f16786900ce7ff5e522dfe66eb..e007f34fd4a496d0f81ff9d50a2ed0f6e8c501d8 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 1074f025e91906b8870e91c091a5a572747cd5b8..5b985308fe2061710dd9ab3d4f8f89dfc739de90 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 2998452afebe164c4e283b5d2c61a4cab90d3044..913a5fd797870d5f1b1e8e0998c4bd0f63585ece 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 c0406e4aab42524368d931ffa172497a0b68ae49..fb362c61a4024c161f3ab0f5a7f95e615050ea2f 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",