From 3bd901342101a89db43a82c12da341ede002d618 Mon Sep 17 00:00:00 2001 From: li-yaoyao777 Date: Mon, 13 Jan 2025 10:48:10 +0800 Subject: [PATCH] Modified branch difference Signed-off-by: li-yaoyao777 --- sensor.gni | 7 +++++++ services/BUILD.gn | 8 ++++++++ services/include/sensor_manager.h | 8 ++++---- services/include/sensor_service.h | 2 ++ services/src/sensor_manager.cpp | 6 +++++- services/src/sensor_service.cpp | 22 +++++++++++++++++++++- 6 files changed, 47 insertions(+), 6 deletions(-) diff --git a/sensor.gni b/sensor.gni index addc8d52..ed130bf7 100644 --- a/sensor.gni +++ b/sensor.gni @@ -42,6 +42,13 @@ if (!defined(global_parts_info) || sensor_memmgr_enable = false } +if (!defined(global_parts_info) || + defined(global_parts_info.security_access_token)) { + sensor_access_token_enable = true +} else { + sensor_access_token_enable = false +} + if (build_variant == "root") { sensor_default_defines += [ "BUILD_VARIANT_ENG" ] sensor_build_eng = true diff --git a/services/BUILD.gn b/services/BUILD.gn index e2bca24f..d3109445 100644 --- a/services/BUILD.gn +++ b/services/BUILD.gn @@ -71,6 +71,10 @@ ohos_shared_library("libsensor_service") { external_deps += [ "memmgr:memmgrclient" ] } + if (sensor_access_token_enable) { + defines += [ "ACCESS_TOKEN_ENABLE" ] + } + if (hdf_drivers_interface_sensor) { sources += [ "hdi_connection/adapter/src/hdi_connection.cpp", @@ -160,6 +164,10 @@ ohos_static_library("libsensor_service_static") { external_deps += [ "memmgr:memmgrclient" ] } + if (sensor_access_token_enable) { + defines += [ "ACCESS_TOKEN_ENABLE" ] + } + if (hdf_drivers_interface_sensor) { sources += [ "hdi_connection/adapter/src/hdi_connection.cpp", diff --git a/services/include/sensor_manager.h b/services/include/sensor_manager.h index c5e8d031..f1b1075d 100644 --- a/services/include/sensor_manager.h +++ b/services/include/sensor_manager.h @@ -47,7 +47,7 @@ public: SensorBasicInfo GetSensorInfo(int32_t sensorId, int64_t samplingPeriodNs, int64_t maxReportDelayNs); bool IsOtherClientUsingSensor(int32_t sensorId, int32_t clientPid); ErrCode AfterDisableSensor(int32_t sensorId); - void GetPackageName(AccessTokenID tokenId, std::string &packageName); + void GetPackageName(AccessTokenID tokenId, std::string &packageName, bool isAccessTokenServiceActive = false); private: #ifdef HDF_DRIVERS_INTERFACE_SENSOR @@ -60,6 +60,6 @@ private: std::unordered_map sensorMap_; std::mutex sensorMapMutex_; }; -} // namespace Sensors -} // namespace OHOS -#endif // SENSOR_MANAGER_H +} // namespace Sensors +} // namespace OHOS +#endif // SENSOR_MANAGER_H diff --git a/services/include/sensor_service.h b/services/include/sensor_service.h index d493aab8..014cf1e3 100644 --- a/services/include/sensor_service.h +++ b/services/include/sensor_service.h @@ -70,6 +70,7 @@ public: private: DISALLOW_COPY_AND_MOVE(SensorService); void OnAddSystemAbility(int32_t systemAbilityId, const std::string &deviceId) override; + void OnRemoveSystemAbility(int32_t systemAbilityId, const std::string &deviceId) override; bool CheckParameter(int32_t sensorId, int64_t samplingPeriodNs, int64_t maxReportDelayNs); class PermStateChangeCb : public Security::AccessToken::PermStateChangeCallbackCustomize { @@ -116,6 +117,7 @@ private: std::shared_ptr permStateChangeCb_ = nullptr; ErrCode SaveSubscriber(int32_t sensorId, int64_t samplingPeriodNs, int64_t maxReportDelayNs); std::atomic_bool isReportActiveInfo_ = false; + static std::atomic_bool isAccessTokenServiceActive_; }; #define POWER_POLICY SensorPowerPolicy::GetInstance() diff --git a/services/src/sensor_manager.cpp b/services/src/sensor_manager.cpp index cf079eba..7118ebeb 100644 --- a/services/src/sensor_manager.cpp +++ b/services/src/sensor_manager.cpp @@ -187,9 +187,13 @@ ErrCode SensorManager::AfterDisableSensor(int32_t sensorId) return ERR_OK; } -void SensorManager::GetPackageName(AccessTokenID tokenId, std::string &packageName) +void SensorManager::GetPackageName(AccessTokenID tokenId, std::string &packageName, bool isAccessTokenServiceActive) { CALL_LOG_ENTER; + if (!isAccessTokenServiceActive) { + SEN_HILOGE("Access token service is inactive"); + return; + } int32_t tokenType = AccessTokenKit::GetTokenTypeFlag(tokenId); switch (tokenType) { case ATokenTypeEnum::TOKEN_HAP: { diff --git a/services/src/sensor_service.cpp b/services/src/sensor_service.cpp index 408dc84a..aa0b5e46 100644 --- a/services/src/sensor_service.cpp +++ b/services/src/sensor_service.cpp @@ -48,6 +48,8 @@ constexpr int64_t MAX_EVENT_COUNT = 1000; std::atomic_bool g_isRegister = false; } // namespace +std::atomic_bool SensorService::isAccessTokenServiceActive_ = false; + SensorService::SensorService() : SystemAbility(SENSOR_SERVICE_ABILITY_ID, true), state_(SensorServiceState::STATE_STOPPED) { @@ -70,6 +72,21 @@ void SensorService::OnAddSystemAbility(int32_t systemAbilityId, const std::strin PROCESS_TYPE_SA, PROCESS_STATUS_STARTED, SENSOR_SERVICE_ABILITY_ID); } #endif // MEMMGR_ENABLE +#ifdef ACCESS_TOKEN_ENABLE + if (systemAbilityId == ACCESS_TOKEN_MANAGER_SERVICE_ID) { + isAccessTokenServiceActive_ = true; + } +#endif // ACCESS_TOKEN_ENABLE +} + +void SensorService::OnRemoveSystemAbility(int32_t systemAbilityId, const std::string &deviceId) +{ + SEN_HILOGI("OnRemoveSystemAbility systemAbilityId:%{public}d", systemAbilityId); +#ifdef ACCESS_TOKEN_ENABLE + if (systemAbilityId == ACCESS_TOKEN_MANAGER_SERVICE_ID) { + isAccessTokenServiceActive_ = false; + } +#endif // ACCESS_TOKEN_ENABLE } void SensorService::OnStart() @@ -108,6 +125,9 @@ void SensorService::OnStart() #ifdef MEMMGR_ENABLE AddSystemAbilityListener(MEMORY_MANAGER_SA_ID); #endif // MEMMGR_ENABLE +#ifdef ACCESS_TOKEN_ENABLE + AddSystemAbilityListener(ACCESS_TOKEN_MANAGER_SERVICE_ID); +#endif // ACCESS_TOKEN_ENABLE } #ifdef HDF_DRIVERS_INTERFACE_SENSOR @@ -185,7 +205,7 @@ void SensorService::ReportSensorSysEvent(int32_t sensorId, bool enable, int32_t { std::string packageName(""); AccessTokenID tokenId = clientInfo_.GetTokenIdByPid(pid); - sensorManager_.GetPackageName(tokenId, packageName); + sensorManager_.GetPackageName(tokenId, packageName, isAccessTokenServiceActive_); const int logLevel = 4; int32_t uid = clientInfo_.GetUidByPid(pid); if (enable) { -- Gitee