mirror of
https://github.com/openharmony/ability_ability_runtime.git
synced 2026-08-24 12:43:16 -04:00
Description:adjust location of permission verification
Sig:SIG_ApplicationFramework Feature or Bugfix:Bugfix Binary Source:No Signed-off-by: altay <yuaqiang1@huawei.com> Change-Id: I8ca15d439ebec6e7d006006b253f4732690f4f68
This commit is contained in:
@@ -532,6 +532,10 @@ public:
|
||||
|
||||
virtual void AttachRenderProcess(const pid_t pid, const sptr<IRenderScheduler> &scheduler);
|
||||
|
||||
int VerifyProcessPermission();
|
||||
|
||||
int VerifyAccountPermission(const std::string &permissionName, const int userId);
|
||||
|
||||
private:
|
||||
|
||||
void StartEmptyResidentProcess(const BundleInfo &info, const std::string &processName, int restartCount);
|
||||
@@ -777,10 +781,6 @@ private:
|
||||
void ClearUpApplicationDataByUserId(const std::string &bundleName,
|
||||
int32_t callerUid, pid_t callerPid, const int userId);
|
||||
|
||||
int VerifyProcessPermission();
|
||||
|
||||
int VerifyAccountPermission(const std::string &permissionName, const int userId);
|
||||
|
||||
int VerifyObserverPermission();
|
||||
|
||||
private:
|
||||
|
||||
@@ -24,6 +24,8 @@
|
||||
#include "app_log_wrapper.h"
|
||||
#include "app_mgr_constants.h"
|
||||
#include "perf_profile.h"
|
||||
#include "permission_constants.h"
|
||||
#include "permission_verification.h"
|
||||
|
||||
namespace OHOS {
|
||||
namespace AppExecFwk {
|
||||
@@ -128,6 +130,11 @@ void AmsMgrScheduler::AbilityBehaviorAnalysis(const sptr<IRemoteObject> &token,
|
||||
|
||||
void AmsMgrScheduler::KillProcessByAbilityToken(const sptr<IRemoteObject> &token)
|
||||
{
|
||||
if (amsMgrServiceInner_->VerifyProcessPermission() == ERR_PERMISSION_DENIED) {
|
||||
APP_LOGE("%{public}s: Permission verification failed", __func__);
|
||||
return;
|
||||
}
|
||||
|
||||
if (!IsReady()) {
|
||||
return;
|
||||
}
|
||||
@@ -138,6 +145,12 @@ void AmsMgrScheduler::KillProcessByAbilityToken(const sptr<IRemoteObject> &token
|
||||
|
||||
void AmsMgrScheduler::KillProcessesByUserId(int32_t userId)
|
||||
{
|
||||
if (amsMgrServiceInner_->VerifyAccountPermission(AAFwk::PermissionConstants::PERMISSION_CLEAN_BACKGROUND_PROCESSES,
|
||||
userId) == ERR_PERMISSION_DENIED) {
|
||||
APP_LOGE("%{public}s: Permission verification failed", __func__);
|
||||
return;
|
||||
}
|
||||
|
||||
if (!IsReady()) {
|
||||
return;
|
||||
}
|
||||
@@ -250,6 +263,16 @@ void AmsMgrScheduler::RegisterStartSpecifiedAbilityResponse(const sptr<IStartSpe
|
||||
void AmsMgrScheduler::UpdateConfiguration(const Configuration &config)
|
||||
{
|
||||
APP_LOGI("AmsMgrScheduler UpdateConfiguration begin");
|
||||
auto isSaCall = AAFwk::PermissionVerification::GetInstance()->IsSACall();
|
||||
if (!isSaCall) {
|
||||
auto isCallingPerm = AAFwk::PermissionVerification::GetInstance()->VerifyCallingPermission(
|
||||
AAFwk::PermissionConstants::PERMISSION_UPDATE_CONFIGURATION);
|
||||
if (!isCallingPerm) {
|
||||
APP_LOGE("%{public}s: Permission verification failed", __func__);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (!IsReady()) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -26,7 +26,8 @@
|
||||
#include "app_log_wrapper.h"
|
||||
#include "app_mgr_constants.h"
|
||||
#include "perf_profile.h"
|
||||
|
||||
#include "permission_constants.h"
|
||||
#include "permission_verification.h"
|
||||
#include "system_environment_information.h"
|
||||
|
||||
namespace OHOS {
|
||||
@@ -258,6 +259,16 @@ sptr<IAmsMgr> AppMgrService::GetAmsMgr()
|
||||
|
||||
int32_t AppMgrService::ClearUpApplicationData(const std::string &bundleName)
|
||||
{
|
||||
auto isSaCall = AAFwk::PermissionVerification::GetInstance()->IsSACall();
|
||||
if (!isSaCall) {
|
||||
auto isCallingPerm = AAFwk::PermissionVerification::GetInstance()->VerifyCallingPermission(
|
||||
AAFwk::PermissionConstants::PERMISSION_CLEAN_APPLICATION_DATA);
|
||||
if (!isCallingPerm) {
|
||||
APP_LOGE("%{public}s: Permission verification failed", __func__);
|
||||
return ERR_PERMISSION_DENIED;
|
||||
}
|
||||
}
|
||||
|
||||
if (!IsReady()) {
|
||||
return ERR_INVALID_OPERATION;
|
||||
}
|
||||
|
||||
@@ -510,16 +510,6 @@ int32_t AppMgrServiceInner::KillApplicationByUserId(const std::string &bundleNam
|
||||
void AppMgrServiceInner::ClearUpApplicationData(const std::string &bundleName, int32_t callerUid, pid_t callerPid)
|
||||
{
|
||||
BYTRACE_NAME(BYTRACE_TAG_APP, __PRETTY_FUNCTION__);
|
||||
auto isSaCall = AAFwk::PermissionVerification::GetInstance()->IsSACall();
|
||||
if (!isSaCall) {
|
||||
auto isCallingPerm = AAFwk::PermissionVerification::GetInstance()->VerifyCallingPermission(
|
||||
AAFwk::PermissionConstants::PERMISSION_CLEAN_APPLICATION_DATA);
|
||||
if (!isCallingPerm) {
|
||||
APP_LOGE("%{public}s: Permission verification failed", __func__);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
auto userId = GetUserIdByUid(callerUid);
|
||||
APP_LOGI("userId:%{public}d", userId);
|
||||
ClearUpApplicationDataByUserId(bundleName, callerUid, callerPid, userId);
|
||||
@@ -930,11 +920,6 @@ void AppMgrServiceInner::KillProcessByAbilityToken(const sptr<IRemoteObject> &to
|
||||
return;
|
||||
}
|
||||
|
||||
if (VerifyProcessPermission() == ERR_PERMISSION_DENIED) {
|
||||
APP_LOGE("%{public}s: Permission verification failed", __func__);
|
||||
return;
|
||||
}
|
||||
|
||||
// befor exec ScheduleProcessSecurityExit return
|
||||
// The resident process won't let him die
|
||||
if (appRecord->IsKeepAliveApp()) {
|
||||
@@ -963,12 +948,6 @@ void AppMgrServiceInner::KillProcessesByUserId(int32_t userId)
|
||||
return;
|
||||
}
|
||||
|
||||
if (VerifyAccountPermission(AAFwk::PermissionConstants::PERMISSION_CLEAN_BACKGROUND_PROCESSES, userId) ==
|
||||
ERR_PERMISSION_DENIED) {
|
||||
APP_LOGE("%{public}s: Permission verification failed", __func__);
|
||||
return;
|
||||
}
|
||||
|
||||
int64_t startTime = SystemTimeMillis();
|
||||
std::list<pid_t> pids;
|
||||
if (!appRunningManager_->GetPidsByUserId(userId, pids)) {
|
||||
@@ -2234,16 +2213,6 @@ void AppMgrServiceInner::HandleStartSpecifiedAbilityTimeOut(const int64_t eventI
|
||||
|
||||
void AppMgrServiceInner::UpdateConfiguration(const Configuration &config)
|
||||
{
|
||||
auto isSaCall = AAFwk::PermissionVerification::GetInstance()->IsSACall();
|
||||
if (!isSaCall) {
|
||||
auto isCallingPerm = AAFwk::PermissionVerification::GetInstance()->VerifyCallingPermission(
|
||||
AAFwk::PermissionConstants::PERMISSION_UPDATE_CONFIGURATION);
|
||||
if (!isCallingPerm) {
|
||||
APP_LOGE("%{public}s: Permission verification failed", __func__);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (!appRunningManager_) {
|
||||
APP_LOGE("appRunningManager_ is null");
|
||||
return;
|
||||
|
||||
Reference in New Issue
Block a user