diff --git a/services/service/include/permission/standard/permission_manager.h b/services/service/include/permission/standard/permission_manager.h index ca52cd98711b2137aecc93490f003481dddc4f8e..4b6d14c0d25eee8ef4f8677fc316ffb065340502 100644 --- a/services/service/include/permission/standard/permission_manager.h +++ b/services/service/include/permission/standard/permission_manager.h @@ -39,6 +39,9 @@ public: bool CheckProcessNameValidModifyLocalDeviceName(const std::string &processName); bool CheckProcessNameValidModifyRemoteDeviceName(const std::string &processName); bool CheckProcessNameValidPutDeviceProfileInfoList(const std::string &processName); + +private: + bool VerifyAccessTokenByPermissionName(const std::string& permissionName); }; } // namespace DistributedHardware } // namespace OHOS diff --git a/services/service/src/permission/standard/permission_manager.cpp b/services/service/src/permission/standard/permission_manager.cpp index c88b33ba8c8561a4487f3165281a5679e2e0a3ac..c900326a6e63d3fa0c269ddc14165d05460fd3d9 100644 --- a/services/service/src/permission/standard/permission_manager.cpp +++ b/services/service/src/permission/standard/permission_manager.cpp @@ -94,56 +94,17 @@ constexpr const static char* g_putDeviceProfileInfoListWhiteList[PUT_DEVICE_PROF bool PermissionManager::CheckPermission(void) { - AccessTokenID tokenCaller = IPCSkeleton::GetCallingTokenID(); - if (tokenCaller == 0) { - LOGE("CheckPermission GetCallingTokenID error."); - return false; - } - ATokenTypeEnum tokenTypeFlag = AccessTokenKit::GetTokenTypeFlag(tokenCaller); - if (tokenTypeFlag == ATokenTypeEnum::TOKEN_HAP || tokenTypeFlag == ATokenTypeEnum::TOKEN_NATIVE) { - if (AccessTokenKit::VerifyAccessToken(tokenCaller, DM_SERVICE_ACCESS_PERMISSION) != - PermissionState::PERMISSION_GRANTED) { - LOGE("DM service access is denied, please apply for corresponding permissions"); - return false; - } - } - return true; + return VerifyAccessTokenByPermissionName(DM_SERVICE_ACCESS_PERMISSION); } bool PermissionManager::CheckNewPermission(void) { - AccessTokenID tokenCaller = IPCSkeleton::GetCallingTokenID(); - if (tokenCaller == 0) { - LOGE("CheckNewPermission GetCallingTokenID error."); - return false; - } - ATokenTypeEnum tokenTypeFlag = AccessTokenKit::GetTokenTypeFlag(tokenCaller); - if (tokenTypeFlag == ATokenTypeEnum::TOKEN_HAP || tokenTypeFlag == ATokenTypeEnum::TOKEN_NATIVE) { - if (AccessTokenKit::VerifyAccessToken(tokenCaller, DM_SERVICE_ACCESS_NEWPERMISSION) != - PermissionState::PERMISSION_GRANTED) { - LOGE("DM service access is denied, please apply for corresponding new permissions"); - return false; - } - } - return true; + return VerifyAccessTokenByPermissionName(DM_SERVICE_ACCESS_NEWPERMISSION); } bool PermissionManager::CheckMonitorPermission(void) { - AccessTokenID tokenCaller = IPCSkeleton::GetCallingTokenID(); - if (tokenCaller == 0) { - LOGE("CheckMonitorPermission GetCallingTokenID error."); - return false; - } - ATokenTypeEnum tokenTypeFlag = AccessTokenKit::GetTokenTypeFlag(tokenCaller); - if (tokenTypeFlag == ATokenTypeEnum::TOKEN_NATIVE) { - if (AccessTokenKit::VerifyAccessToken(tokenCaller, DM_MONITOR_DEVICE_NETWORK_STATE_PERMISSION) != - PermissionState::PERMISSION_GRANTED) { - LOGE("DM service access is denied, please apply for corresponding permissions."); - return false; - } - } - return true; + return VerifyAccessTokenByPermissionName(DM_MONITOR_DEVICE_NETWORK_STATE_PERMISSION); } int32_t PermissionManager::GetCallerProcessName(std::string &processName) @@ -330,5 +291,23 @@ bool PermissionManager::CheckProcessNameValidPutDeviceProfileInfoList(const std: } return false; } + +bool PermissionManager::VerifyAccessTokenByPermissionName(const std::string& permissionName) +{ + AccessTokenID tokenCaller = IPCSkeleton::GetCallingTokenID(); + if (tokenCaller == 0) { + LOGE("GetCallingTokenID error."); + return false; + } + ATokenTypeEnum tokenTypeFlag = AccessTokenKit::GetTokenTypeFlag(tokenCaller); + if (tokenTypeFlag == ATokenTypeEnum::TOKEN_HAP || tokenTypeFlag == ATokenTypeEnum::TOKEN_NATIVE) { + if (AccessTokenKit::VerifyAccessToken(tokenCaller, permissionName) == + PermissionState::PERMISSION_GRANTED) { + return true; + } + } + LOGE("DM service access is denied, please apply for corresponding permissions"); + return false; +} } // namespace DistributedHardware } // namespace OHOS