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:
altay
2022-03-04 09:55:07 +08:00
parent df93765ba2
commit d2b6930683
4 changed files with 39 additions and 36 deletions
@@ -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:
+23
View File
@@ -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;
}
+12 -1
View File
@@ -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;