From 09c2ee7578a69dd59cd7fdac20734b633a366c5a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E5=BF=97?= Date: Wed, 7 Jun 2023 06:27:45 +0000 Subject: [PATCH 1/4] update services/abilitymgr/src/ability_manager_service.cpp. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 曹志 --- services/abilitymgr/src/ability_manager_service.cpp | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/services/abilitymgr/src/ability_manager_service.cpp b/services/abilitymgr/src/ability_manager_service.cpp index 0f49ba3b409..d9fd9c0f478 100644 --- a/services/abilitymgr/src/ability_manager_service.cpp +++ b/services/abilitymgr/src/ability_manager_service.cpp @@ -1911,11 +1911,14 @@ int AbilityManagerService::SendResultToAbility(int32_t requestCode, int32_t resu Security::AccessToken::NativeTokenInfo nativeTokenInfo; uint32_t accessToken = IPCSkeleton::GetCallingTokenID(); auto tokenType = Security::AccessToken::AccessTokenKit::GetTokenTypeFlag(accessToken); + auto isGatewayCall = AAFwk::PermissionVerification::GetInstance()->IsGatewayCall(); int32_t result = Security::AccessToken::AccessTokenKit::GetNativeTokenInfo(accessToken, nativeTokenInfo); if (tokenType != Security::AccessToken::ATokenTypeEnum::TOKEN_NATIVE || result != ERR_OK || nativeTokenInfo.processName != DMS_PROCESS_NAME) { - HILOG_ERROR("Check processName failed"); - return ERR_INVALID_VALUE; + if (!isGatewayCall) { + HILOG_ERROR("Check processName failed"); + return ERR_INVALID_VALUE; + } } int missionId = resultWant.GetIntParam(DMS_MISSION_ID, DEFAULT_DMS_MISSION_ID); resultWant.RemoveParam(DMS_MISSION_ID); @@ -6869,6 +6872,10 @@ bool AbilityManagerService::IsComponentInterceptionStart(const Want &want, Compo if (callType == AbilityCallType::CALL_REQUEST_TYPE) { newWant.SetParam("abilityConnectionObj", request.connect->AsObject()); } + if (want.GetBoolParam(Want::PARAM_RESV_FOR_RESULT, false)) { + int32_t missionId = GetMissionIdByAbilityToken(componentRequest.callerToken); + newWant.SetParam(DMS_MISSION_ID, missionId); + } int32_t tokenId = static_cast(IPCSkeleton::GetCallingTokenID()); newWant.SetParam("accessTokenId", tokenId); -- Gitee From f76174eb950967dcddf3f3f0267b9a340cdd46b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E5=BF=97?= Date: Wed, 7 Jun 2023 06:33:03 +0000 Subject: [PATCH 2/4] update services/abilitymgr/src/ability_record.cpp. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 曹志 --- services/abilitymgr/src/ability_record.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/services/abilitymgr/src/ability_record.cpp b/services/abilitymgr/src/ability_record.cpp index 4ca4b1081ab..579a8417332 100644 --- a/services/abilitymgr/src/ability_record.cpp +++ b/services/abilitymgr/src/ability_record.cpp @@ -1566,6 +1566,11 @@ bool AbilityRecord::IsSystemAbilityCall(const sptr &callerToken) if (abilityRecord != nullptr) { return false; } + auto isGatewayCall = AAFwk::PermissionVerification::GetInstance()->isGatewayCall(); + if (isGatewayCall) { + HILOG_INFO("Is gateway call."); + return true; + } auto tokenType = Security::AccessToken::AccessTokenKit::GetTokenTypeFlag(IPCSkeleton::GetCallingTokenID()); bool isNativeCall = tokenType == Security::AccessToken::ATokenTypeEnum::TOKEN_NATIVE; if (!isNativeCall) { -- Gitee From 232291d2ecb566cbf1e525cc1d663eff09fce00b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E5=BF=97?= Date: Wed, 7 Jun 2023 06:41:28 +0000 Subject: [PATCH 3/4] update services/common/src/permission_verification.cpp. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 曹志 --- services/common/src/permission_verification.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/services/common/src/permission_verification.cpp b/services/common/src/permission_verification.cpp index f2de6edddca..b6350051ef6 100644 --- a/services/common/src/permission_verification.cpp +++ b/services/common/src/permission_verification.cpp @@ -90,6 +90,10 @@ bool PermissionVerification::IsGatewayCall() const bool PermissionVerification::CheckSpecificSystemAbilityAccessPermission() const { HILOG_DEBUG("PermissionVerification::CheckSpecifidSystemAbilityAccessToken is called."); + if (IsGatewayCall()) { + HILOG_INFO("Is gateway call."); + return true; + } if (!IsSACall()) { HILOG_ERROR("caller tokenType is not native, verify failed."); return false; -- Gitee From 963a7f5b757181257f3acc3ef4b1f75f06e10f9f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E5=BF=97?= Date: Wed, 7 Jun 2023 06:42:53 +0000 Subject: [PATCH 4/4] update services/abilitymgr/src/ability_record.cpp. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 曹志 --- services/abilitymgr/src/ability_record.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/abilitymgr/src/ability_record.cpp b/services/abilitymgr/src/ability_record.cpp index 579a8417332..881260279cc 100644 --- a/services/abilitymgr/src/ability_record.cpp +++ b/services/abilitymgr/src/ability_record.cpp @@ -1566,7 +1566,7 @@ bool AbilityRecord::IsSystemAbilityCall(const sptr &callerToken) if (abilityRecord != nullptr) { return false; } - auto isGatewayCall = AAFwk::PermissionVerification::GetInstance()->isGatewayCall(); + auto isGatewayCall = AAFwk::PermissionVerification::GetInstance()->IsGatewayCall(); if (isGatewayCall) { HILOG_INFO("Is gateway call."); return true; -- Gitee