diff --git a/interfaces/innerkits/accesstoken/include/access_token_error.h b/interfaces/innerkits/accesstoken/include/access_token_error.h index 2b1c0ed0c1a484d6ac02d2b85f96efdd523fa9d8..9f0fd9a9149709529bced03ea790b5d6e208b1c9 100644 --- a/interfaces/innerkits/accesstoken/include/access_token_error.h +++ b/interfaces/innerkits/accesstoken/include/access_token_error.h @@ -77,6 +77,7 @@ enum AccessTokenError { ERR_USER_POLICY_INITIALIZED, ERR_USER_POLICY_NOT_INITIALIZED, ERR_REMOTE_CONNECTION, + ERR_ADD_DEATH_RECIPIENT_FAILED, }; } // namespace AccessToken } // namespace Security diff --git a/interfaces/innerkits/privacy/include/privacy_error.h b/interfaces/innerkits/privacy/include/privacy_error.h index dd56f19e5099a04b83928efa7f3d7c64bf4a0ef5..af25d0c187574da55641a9432082756ae3a38b58 100644 --- a/interfaces/innerkits/privacy/include/privacy_error.h +++ b/interfaces/innerkits/privacy/include/privacy_error.h @@ -63,6 +63,7 @@ enum PrivacyError { ERR_EDM_POLICY_CHECK_FAILED, ERR_PRIVACY_POLICY_CHECK_FAILED, ERR_REMOTE_CONNECTION, + ERR_ADD_DEATH_RECIPIENT_FAILED, }; } // namespace AccessToken } // namespace Security diff --git a/services/accesstokenmanager/main/cpp/src/callback/callback_manager.cpp b/services/accesstokenmanager/main/cpp/src/callback/callback_manager.cpp index bdb2c10c17dea03d946258274d181c9244d935b1..57480ea484e6fdf762b62eb9306a55de4f9c1a6e 100644 --- a/services/accesstokenmanager/main/cpp/src/callback/callback_manager.cpp +++ b/services/accesstokenmanager/main/cpp/src/callback/callback_manager.cpp @@ -76,9 +76,9 @@ int32_t CallbackManager::AddCallback(const PermStateChangeScope& scopeRes, const ACCESSTOKEN_LOG_ERROR(LABEL, "Callback size has reached limitation"); return AccessTokenError::ERR_CALLBACKS_EXCEED_LIMITATION; } - int32_t ret = callback->AddDeathRecipient(callbackDeathRecipient_); - if (ret != ERR_NONE) { - ACCESSTOKEN_LOG_ERROR(LABEL, "add death recipient failed ret is %{public}d", ret); + if (!callback->AddDeathRecipient(callbackDeathRecipient_)) { + ACCESSTOKEN_LOG_ERROR(LABEL, "add death recipient failed."); + return AccessTokenError::ERR_ADD_DEATH_RECIPIENT_FAILED; } CallbackRecord recordInstance; @@ -87,7 +87,6 @@ int32_t CallbackManager::AddCallback(const PermStateChangeScope& scopeRes, const callbackInfoList_.emplace_back(recordInstance); - ACCESSTOKEN_LOG_INFO(LABEL, "RecordInstance is added"); return RET_SUCCESS; } diff --git a/services/accesstokenmanager/main/cpp/src/permission/permission_manager.cpp b/services/accesstokenmanager/main/cpp/src/permission/permission_manager.cpp index a33762a6335a532931af1e771c121130165959a6..61864f6b32abb5fd096e83747f0f571d852021b9 100644 --- a/services/accesstokenmanager/main/cpp/src/permission/permission_manager.cpp +++ b/services/accesstokenmanager/main/cpp/src/permission/permission_manager.cpp @@ -668,7 +668,6 @@ int32_t PermissionManager::ScopeFilter(const PermStateChangeScope& scopeSrc, Per int32_t PermissionManager::AddPermStateChangeCallback( const PermStateChangeScope& scope, const sptr& callback) { - ACCESSTOKEN_LOG_INFO(LABEL, "Called"); PermStateChangeScope scopeRes; int32_t result = ScopeFilter(scope, scopeRes); if (result != RET_SUCCESS) { diff --git a/services/accesstokenmanager/test/unittest/permission_manager_test.cpp b/services/accesstokenmanager/test/unittest/permission_manager_test.cpp index fbea6ad53d46838428dab19b2d2c45ce64c24f5f..754f6c3bf90a5bb6d3d9951ba21ecad686647f09 100644 --- a/services/accesstokenmanager/test/unittest/permission_manager_test.cpp +++ b/services/accesstokenmanager/test/unittest/permission_manager_test.cpp @@ -766,12 +766,18 @@ public: virtual ~PermChangeCallback() = default; void PermStateChangeCallback(PermStateChangeInfo& result) override; + bool AddDeathRecipient(const sptr& callback1) override; }; void PermChangeCallback::PermStateChangeCallback(PermStateChangeInfo& result) { } +bool PermChangeCallback::AddDeathRecipient(const sptr& callback1) +{ + return true; +} + /** * @tc.name: AddPermStateChangeCallback002 * @tc.desc: Test AddPermStateChangeCallback with exceed limitation. diff --git a/services/privacymanager/src/active/active_status_callback_manager.cpp b/services/privacymanager/src/active/active_status_callback_manager.cpp index ff5f794dbd2d9566cd83311a34d72c39ebcf59c2..5e4cdb5ec39114f1ec51ee859294143de0a3e659 100644 --- a/services/privacymanager/src/active/active_status_callback_manager.cpp +++ b/services/privacymanager/src/active/active_status_callback_manager.cpp @@ -79,7 +79,10 @@ int32_t ActiveStatusCallbackManager::AddCallback( ACCESSTOKEN_LOG_ERROR(LABEL, "List size has reached max value"); return PrivacyError::ERR_CALLBACKS_EXCEED_LIMITATION; } - callback->AddDeathRecipient(callbackDeathRecipient_); + if (!callback->AddDeathRecipient(callbackDeathRecipient_)) { + ACCESSTOKEN_LOG_ERROR(LABEL, "add death recipient failed."); + return PrivacyError::ERR_ADD_DEATH_RECIPIENT_FAILED; + } CallbackData recordInstance; recordInstance.registerTokenId = regiterTokenId; diff --git a/services/privacymanager/test/unittest/permission_record_manager_test.cpp b/services/privacymanager/test/unittest/permission_record_manager_test.cpp index aa125a92eb796e389c35eda50ffe12a10e525532..4cb9820a9cb15789aae0fad7d6575a2e5fd4fc08 100644 --- a/services/privacymanager/test/unittest/permission_record_manager_test.cpp +++ b/services/privacymanager/test/unittest/permission_record_manager_test.cpp @@ -239,6 +239,10 @@ public: } ActiveChangeType type_ = PERM_INACTIVE; + + bool AddDeathRecipient(const sptr& callback1) { + return true; + } }; /** @@ -256,7 +260,7 @@ HWTEST_F(PermissionRecordManagerTest, RegisterPermActiveStatusCallback002, TestS sptr callback = new (std::nothrow) PermActiveStatusChangeCallback(); ASSERT_NE(nullptr, callback); ASSERT_EQ(RET_SUCCESS, PermissionRecordManager::GetInstance().RegisterPermActiveStatusCallback( - GetSelfTokenID(), permList, callback->AsObject())); + GetSelfTokenID(), permList, callback->AsObject())); callbacks.emplace_back(callback); }