diff --git a/services/accesstokenmanager/main/cpp/include/permission/permission_manager.h b/services/accesstokenmanager/main/cpp/include/permission/permission_manager.h index a8b54dadd65ee74e0d0f3a46f63e89bde330fa26..71e96caf7d5b86e8334744de15830dfb19c2113a 100644 --- a/services/accesstokenmanager/main/cpp/include/permission/permission_manager.h +++ b/services/accesstokenmanager/main/cpp/include/permission/permission_manager.h @@ -99,8 +99,6 @@ public: HapInfoCheckResult& result, std::vector& undefValues); bool InitDlpPermissionList(const std::string& bundleName, int32_t userId, std::vector& initializedList, std::vector& undefValues); - void GetStateOrFlagChangedList(std::vector& stateListBefore, - std::vector& stateListAfter, std::vector& stateChangeList); void NotifyUpdatedPermList(const std::vector& grantedPermListBefore, const std::vector& grantedPermListAfter, AccessTokenID tokenID); bool IsPermAvailableRangeSatisfied(const PermissionBriefDef& briefDef, const std::string& appDistributionType); @@ -119,7 +117,6 @@ private: bool GetLocationPermissionIndex(std::vector& reqPermList, LocationIndex& locationIndex); bool GetLocationPermissionState(AccessTokenID tokenID, std::vector& reqPermList, std::vector& permsList, int32_t apiVersion, const LocationIndex& locationIndex); - bool IsPermissionStateOrFlagMatched(const PermissionStatus& stata1, const PermissionStatus& stata2); void FillUndefinedPermVector(const std::string& permissionName, const std::string& appDistributionType, const HapPolicy& policy, std::vector& undefValues); bool AclAndEdmCheck(const PermissionBriefDef& briefDef, const HapPolicy& policy, const std::string& permissionName, diff --git a/services/accesstokenmanager/main/cpp/src/permission/permission_data_brief.cpp b/services/accesstokenmanager/main/cpp/src/permission/permission_data_brief.cpp index cc6cd8367915d0935b81815d6e142b40520b287f..d1986c22a389915f7587aa2cc17342c073123cbe 100644 --- a/services/accesstokenmanager/main/cpp/src/permission/permission_data_brief.cpp +++ b/services/accesstokenmanager/main/cpp/src/permission/permission_data_brief.cpp @@ -391,7 +391,8 @@ int32_t PermissionDataBrief::StorePermissionBriefData(AccessTokenID tokenId, GenericValues genericValues; PermissionStatus permState; if (!GetPermissionStatus(data, permState)) { - return ERR_PERMISSION_NOT_EXIST; + LOGE(ATM_DOMAIN, ATM_TAG, "Permission not exist, code=%{public}d", static_cast(data.permCode)); + continue; } genericValues.Put(TokenFiledConst::FIELD_TOKEN_ID, static_cast(tokenId)); DataTranslator::TranslationIntoGenericValues(permState, genericValues); diff --git a/services/accesstokenmanager/main/cpp/src/permission/permission_manager.cpp b/services/accesstokenmanager/main/cpp/src/permission/permission_manager.cpp index 599ffc91b233ee6a619f94046fc1942faa974803..949652a132ff3045e00231344e77fb95cb382bb6 100644 --- a/services/accesstokenmanager/main/cpp/src/permission/permission_manager.cpp +++ b/services/accesstokenmanager/main/cpp/src/permission/permission_manager.cpp @@ -776,27 +776,6 @@ void PermissionManager::NotifyUpdatedPermList(const std::vector& gr } } -bool PermissionManager::IsPermissionStateOrFlagMatched(const PermissionStatus& state1, - const PermissionStatus& state2) -{ - return ((state1.grantStatus == state2.grantStatus) && (state1.grantFlag == state2.grantFlag)); -} - -void PermissionManager::GetStateOrFlagChangedList(std::vector& stateListBefore, - std::vector& stateListAfter, std::vector& stateChangeList) -{ - uint32_t size = stateListBefore.size(); - - for (uint32_t i = 0; i < size; ++i) { - PermissionStatus state1 = stateListBefore[i]; - PermissionStatus state2 = stateListAfter[i]; - - if (!IsPermissionStateOrFlagMatched(state1, state2)) { - stateChangeList.emplace_back(state2); - } - } -} - void PermissionManager::NotifyPermGrantStoreResult(bool result, uint64_t timestamp) { grantEvent_.NotifyPermGrantStoreResult(result, timestamp); diff --git a/services/accesstokenmanager/main/cpp/src/token/accesstoken_info_manager.cpp b/services/accesstokenmanager/main/cpp/src/token/accesstoken_info_manager.cpp index 0355c17c352ba155b309d8698c8b86adb000915f..f10f89e4e89cb20e9d03a2cdc58bf25b6f4cdc5e 100644 --- a/services/accesstokenmanager/main/cpp/src/token/accesstoken_info_manager.cpp +++ b/services/accesstokenmanager/main/cpp/src/token/accesstoken_info_manager.cpp @@ -1402,7 +1402,7 @@ bool AccessTokenInfoManager::IsPermissionRestrictedByUserPolicy(AccessTokenID id std::shared_ptr infoPtr = AccessTokenInfoManager::GetInstance().GetHapTokenInfoInner(id); if (infoPtr == nullptr) { LOGE(ATM_DOMAIN, ATM_TAG, "Token %{public}u is invalid.", id); - return ERR_PARAM_INVALID; + return true; } int32_t userId = infoPtr->GetUserID(); Utils::UniqueReadGuard infoGuard(this->userPolicyLock_); diff --git a/services/accesstokenmanager/test/unittest/accesstoken_info_manager_test.cpp b/services/accesstokenmanager/test/unittest/accesstoken_info_manager_test.cpp index aefb7b42089c5856fd266a1ee56231f7f25f49ec..b15a294ee55fdd26972ac52da46a7f4ba35a330e 100644 --- a/services/accesstokenmanager/test/unittest/accesstoken_info_manager_test.cpp +++ b/services/accesstokenmanager/test/unittest/accesstoken_info_manager_test.cpp @@ -2418,6 +2418,19 @@ HWTEST_F(AccessTokenInfoManagerTest, GetPermissionRequestToggleStatus002, TestSi ASSERT_EQ(setStatusOpen, getStatus); } + +/** + * @tc.name: IsPermissionRestrictedByUserPolicy001 + * @tc.desc: IsPermissionRestrictedByUserPolicy function test with invalid tokenid. + * @tc.type: FUNC + * @tc.require: + */ +HWTEST_F(AccessTokenInfoManagerTest, IsPermissionRestrictedByUserPolicy001, TestSize.Level0) +{ + AccessTokenID tokenID = 123; // invalid tokenid + EXPECT_TRUE(AccessTokenInfoManager::GetInstance().IsPermissionRestrictedByUserPolicy(tokenID, + "ohos.permission.CAMERA")); +} } // namespace AccessToken } // namespace Security } // namespace OHOS \ No newline at end of file