From 90034814023d5012bf344fdf25bcae5e6f27ec86 Mon Sep 17 00:00:00 2001 From: xuhanyang Date: Sat, 25 Mar 2023 16:04:47 +0800 Subject: [PATCH] add permission checking of reminder event Signed-off-by: xuhanyang --- services/ans/include/reminder_event_manager.h | 1 + services/ans/src/reminder_event_manager.cpp | 16 ++++++++++++++++ 2 files changed, 17 insertions(+) diff --git a/services/ans/include/reminder_event_manager.h b/services/ans/include/reminder_event_manager.h index dbc625f26..1897ec52c 100644 --- a/services/ans/include/reminder_event_manager.h +++ b/services/ans/include/reminder_event_manager.h @@ -44,6 +44,7 @@ private: sptr GetBundleOption(const OHOS::EventFwk::Want &want) const; void HandlePackageRemove(const EventFwk::Want &want) const; void HandleProcessDied(const EventFwk::Want &want) const; + bool CheckCallingPermission(); std::shared_ptr reminderDataManager_ = nullptr; }; diff --git a/services/ans/src/reminder_event_manager.cpp b/services/ans/src/reminder_event_manager.cpp index 1a9c2b265..89446a0e1 100644 --- a/services/ans/src/reminder_event_manager.cpp +++ b/services/ans/src/reminder_event_manager.cpp @@ -83,8 +83,24 @@ ReminderEventManager::ReminderEventSubscriber::ReminderEventSubscriber( reminderDataManager_ = reminderDataManager; } +bool ReminderEventManager::ReminderEventSubscriber::CheckCallingPermission() +{ + Security::AccessToken::NativeTokenInfo nativeTokenInfo; + uint32_t accessToken = IPCSkeleton::GetCallingTokenID(); + auto tokenType = Security::AccessToken::AccessTokenKit::GetTokenTypeFlag(accessToken); + bool isSystemApp = Security::AccessToken::TokenIdKit::ISystemAppByFullTokenID(accessToken); + if (tokenType == Security::AccessToken::ATokenTypeEnum::TOKEN_NATIVE || isSystemApp) { + return true; + } + return false; +} + void ReminderEventManager::ReminderEventSubscriber::OnReceiveEvent(const EventFwk::CommonEventData &data) { + if (!CheckCallingPermission()) { + ANSR_LOGD("Don't have calling permission!"); + return; + } Want want = data.GetWant(); std::string action = want.GetAction(); ANSR_LOGI("Recieved common event:%{public}s", action.c_str()); -- Gitee