diff --git a/test/unittest/src/interface_test/power_mgr_util_test.cpp b/test/unittest/src/interface_test/power_mgr_util_test.cpp index 5518893eb6bb7e335b3b4451ed3e59b40c58e38d..ed55fe8fb232eb3c1817ae4294a97587e9370caa 100644 --- a/test/unittest/src/interface_test/power_mgr_util_test.cpp +++ b/test/unittest/src/interface_test/power_mgr_util_test.cpp @@ -273,7 +273,10 @@ HWTEST_F (PowerMgrUtilTest, SettingProvider002, TestSize.Level0) settingProvider.GetIntValue("settings.power.suspend_sources", getValue); SettingObserver::UpdateFunc updateFunc = [&](const std::string&) {}; auto observer = settingProvider.CreateObserver("settings.power.suspend_sources", updateFunc); - EXPECT_EQ(OHOS::ERR_OK, settingProvider.RegisterObserver(observer)); + OHOS::ErrCode ret = settingProvider.RegisterObserver(observer); + EXPECT_EQ(OHOS::ERR_OK, ret); + ret = settingProvider.RegisterObserver(nullptr); + EXPECT_EQ(OHOS::ERR_INVALID_VALUE, ret); POWER_HILOGI(LABEL_TEST, "SettingProvider002 function end!"); } @@ -294,6 +297,8 @@ HWTEST_F (PowerMgrUtilTest, SettingProvider003, TestSize.Level0) OHOS::ErrCode ret = settingProvider.RegisterObserver(observer); ret = settingProvider.UnregisterObserver(observer); EXPECT_EQ(OHOS::ERR_OK, ret); + ret = settingProvider.UnregisterObserver(nullptr); + EXPECT_EQ(OHOS::ERR_INVALID_VALUE, ret); POWER_HILOGI(LABEL_TEST, "SettingProvider003 function end!"); } diff --git a/utils/setting/src/setting_provider.cpp b/utils/setting/src/setting_provider.cpp index d74ae9ceee9aff1531f8d83af43887df1a382df6..bed3a11d070c9fa81c6a00e3041a02cc7dbe0989 100644 --- a/utils/setting/src/setting_provider.cpp +++ b/utils/setting/src/setting_provider.cpp @@ -169,6 +169,10 @@ void SettingProvider::ExecRegisterCb(const sptr& observer) ErrCode SettingProvider::RegisterObserver(const sptr& observer) { + if (observer == nullptr) { + POWER_HILOGE(COMP_UTILS, "observer is nullptr"); + return ERR_INVALID_VALUE; + } std::string callingIdentity = IPCSkeleton::ResetCallingIdentity(); auto uri = AssembleUri(observer->GetKey()); auto helper = CreateDataShareHelper(observer->GetKey()); @@ -188,6 +192,10 @@ ErrCode SettingProvider::RegisterObserver(const sptr& observer) ErrCode SettingProvider::UnregisterObserver(const sptr& observer) { + if (observer == nullptr) { + POWER_HILOGE(COMP_UTILS, "observer is nullptr"); + return ERR_INVALID_VALUE; + } std::string callingIdentity = IPCSkeleton::ResetCallingIdentity(); auto uri = AssembleUri(observer->GetKey()); auto helper = CreateDataShareHelper(observer->GetKey());