From ab06de5eb033c726e0e8a344284805ef3384269b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9Cry521=E2=80=9D?= Date: Tue, 26 Sep 2023 12:35:54 +0800 Subject: [PATCH 01/15] message MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: “ry521” --- bundle.json | 2 + services/screenservice/sinkservice/BUILD.gn | 2 + .../dscreenservice/src/dscreen_sink_stub.cpp | 42 ++++-- services/screenservice/sourceservice/BUILD.gn | 2 + .../src/dscreen_source_stub.cpp | 138 +++++++++++------- 5 files changed, 119 insertions(+), 67 deletions(-) diff --git a/bundle.json b/bundle.json index 3d709f0e..a22f764d 100644 --- a/bundle.json +++ b/bundle.json @@ -28,6 +28,8 @@ ], "deps": { "components": [ + "access_token", + "accessibility", "dsoftbus", "hisysevent", "init", diff --git a/services/screenservice/sinkservice/BUILD.gn b/services/screenservice/sinkservice/BUILD.gn index aca0540e..615715d7 100644 --- a/services/screenservice/sinkservice/BUILD.gn +++ b/services/screenservice/sinkservice/BUILD.gn @@ -68,6 +68,8 @@ ohos_shared_library("distributed_screen_sink") { ] external_deps = [ + "access_token:libaccesstoken_sdk", + "access_token:libtokenid_sdk", "c_utils:utils", "distributed_hardware_fwk:distributed_av_receiver", "distributed_hardware_fwk:libdhfwk_sdk", diff --git a/services/screenservice/sinkservice/dscreenservice/src/dscreen_sink_stub.cpp b/services/screenservice/sinkservice/dscreenservice/src/dscreen_sink_stub.cpp index fe309f31..ac1e2494 100644 --- a/services/screenservice/sinkservice/dscreenservice/src/dscreen_sink_stub.cpp +++ b/services/screenservice/sinkservice/dscreenservice/src/dscreen_sink_stub.cpp @@ -15,10 +15,12 @@ #include "dscreen_sink_stub.h" +#include "accesstoken_kit.h" #include "dscreen_constants.h" #include "dscreen_errcode.h" #include "dscreen_ipc_interface_code.h" #include "dscreen_log.h" +#include "ipc_skeleton.h" namespace OHOS { namespace DistributedHardware { @@ -58,25 +60,39 @@ int32_t DScreenSinkStub::OnRemoteRequest(uint32_t code, MessageParcel &data, Mes int32_t DScreenSinkStub::InitSinkInner(MessageParcel &data, MessageParcel &reply, MessageOption &option) { - (void)option; - std::string param = data.ReadString(); - if (param.empty() || param.size() > PARAM_MAX_SIZE) { - DHLOGE("InitSinkInner error: invalid parameter."); - return ERR_DH_SCREEN_INPUT_PARAM_INVALID; + Security::AccessToken::AccessTokenID callerToken = IPCSkeleton::GetCallingTokenID(); + int result = Security::AccessToken::AccessTokenKit::VerifyAccessToken(callerToken, + "ohos.permission.ENABLE_DISTRIBUTED_HARDWARE"); + if (result == Security::AccessToken::PERMISSION_GRANTED) { + (void)option; + std::string param = data.ReadString(); + if (param.empty() || param.size() > PARAM_MAX_SIZE) { + DHLOGE("InitSinkInner error: invalid parameter."); + return ERR_DH_SCREEN_INPUT_PARAM_INVALID; + } + int32_t ret = InitSink(param); + reply.WriteInt32(ret); + return DH_SUCCESS; } - int32_t ret = InitSink(param); - reply.WriteInt32(ret); - return DH_SUCCESS; + DHLOGE("AccessToken err."); + return DSCREEN_INIT_ERR; } int32_t DScreenSinkStub::ReleaseSinkInner(MessageParcel &data, MessageParcel &reply, MessageOption &option) { - (void)data; - (void)option; - int32_t ret = ReleaseSink(); - reply.WriteInt32(ret); - return DH_SUCCESS; + Security::AccessToken::AccessTokenID callerToken = IPCSkeleton::GetCallingTokenID(); + int result = Security::AccessToken::AccessTokenKit::VerifyAccessToken(callerToken, + "ohos.permission.ENABLE_DISTRIBUTED_HARDWARE"); + if (result == Security::AccessToken::PERMISSION_GRANTED) { + (void)data; + (void)option; + int32_t ret = ReleaseSink(); + reply.WriteInt32(ret); + return DH_SUCCESS; + } + DHLOGE("AccessToken err."); + return DSCREEN_INIT_ERR; } int32_t DScreenSinkStub::SubscribeDistributedHardwareInner(MessageParcel &data, MessageParcel &reply, diff --git a/services/screenservice/sourceservice/BUILD.gn b/services/screenservice/sourceservice/BUILD.gn index 92469d0f..feaf872c 100644 --- a/services/screenservice/sourceservice/BUILD.gn +++ b/services/screenservice/sourceservice/BUILD.gn @@ -74,6 +74,8 @@ ohos_shared_library("distributed_screen_source") { ] external_deps = [ + "access_token:libaccesstoken_sdk", + "access_token:libtokenid_sdk", "c_utils:utils", "distributed_hardware_fwk:distributed_av_sender", "distributed_hardware_fwk:distributedhardwareutils", diff --git a/services/screenservice/sourceservice/dscreenservice/src/dscreen_source_stub.cpp b/services/screenservice/sourceservice/dscreenservice/src/dscreen_source_stub.cpp index 140a13a3..3533d70a 100644 --- a/services/screenservice/sourceservice/dscreenservice/src/dscreen_source_stub.cpp +++ b/services/screenservice/sourceservice/dscreenservice/src/dscreen_source_stub.cpp @@ -17,11 +17,13 @@ #include "iservice_registry.h" +#include "accesstoken_kit.h" #include "dscreen_constants.h" #include "dscreen_errcode.h" #include "dscreen_ipc_interface_code.h" #include "dscreen_log.h" #include "dscreen_source_callback_proxy.h" +#include "ipc_skeleton.h" namespace OHOS { namespace DistributedHardware { @@ -63,75 +65,103 @@ int32_t DScreenSourceStub::OnRemoteRequest(uint32_t code, MessageParcel &data, M int32_t DScreenSourceStub::InitSourceInner(MessageParcel &data, MessageParcel &reply, MessageOption &option) { - (void)option; - std::string param = data.ReadString(); - if (param.empty() || param.size() > PARAM_MAX_SIZE) { - DHLOGE("InitSourceInner error: invalid parameter"); - return ERR_DH_SCREEN_INPUT_PARAM_INVALID; - } - sptr remoteObject = data.ReadRemoteObject(); - if (remoteObject == nullptr) { - DHLOGE("Read param failed."); - return ERR_DH_SCREEN_SA_READPARAM_FAILED; - } - - sptr dScreenSourceCallbackProxy(new DScreenSourceCallbackProxy(remoteObject)); - if (dScreenSourceCallbackProxy == nullptr) { - DHLOGE("dScreenSourceCallbackProxy is nullptr."); - return ERR_DH_SCREEN_SA_READPARAM_FAILED; - } - int32_t ret = InitSource(param, dScreenSourceCallbackProxy); - reply.WriteInt32(ret); - return DH_SUCCESS; + Security::AccessToken::AccessTokenID callerToken = IPCSkeleton::GetCallingTokenID(); + int result = Security::AccessToken::AccessTokenKit::VerifyAccessToken(callerToken, + "ohos.permission.ENABLE_DISTRIBUTED_HARDWARE"); + if (result == Security::AccessToken::PERMISSION_GRANTED) { + (void)option; + std::string param = data.ReadString(); + if (param.empty() || param.size() > PARAM_MAX_SIZE) { + DHLOGE("InitSourceInner error: invalid parameter"); + return ERR_DH_SCREEN_INPUT_PARAM_INVALID; + } + sptr remoteObject = data.ReadRemoteObject(); + if (remoteObject == nullptr) { + DHLOGE("Read param failed."); + return ERR_DH_SCREEN_SA_READPARAM_FAILED; + } + + sptr dScreenSourceCallbackProxy(new DScreenSourceCallbackProxy(remoteObject)); + if (dScreenSourceCallbackProxy == nullptr) { + DHLOGE("dScreenSourceCallbackProxy is nullptr."); + return ERR_DH_SCREEN_SA_READPARAM_FAILED; + } + int32_t ret = InitSource(param, dScreenSourceCallbackProxy); + reply.WriteInt32(ret); + return DH_SUCCESS; + } + DHLOGE("AccessToken err."); + return DSCREEN_INIT_ERR; } int32_t DScreenSourceStub::ReleaseSourceInner(MessageParcel &data, MessageParcel &reply, MessageOption &option) { - (void)data; - (void)option; - int32_t ret = ReleaseSource(); - reply.WriteInt32(ret); - return DH_SUCCESS; + Security::AccessToken::AccessTokenID callerToken = IPCSkeleton::GetCallingTokenID(); + int result = Security::AccessToken::AccessTokenKit::VerifyAccessToken(callerToken, + "ohos.permission.ENABLE_DISTRIBUTED_HARDWARE"); + if (result == Security::AccessToken::PERMISSION_GRANTED) { + (void)data; + (void)option; + int32_t ret = ReleaseSource(); + reply.WriteInt32(ret); + return DH_SUCCESS; + } + DHLOGE("AccessToken err."); + return DSCREEN_INIT_ERR; } int32_t DScreenSourceStub::RegisterDistributedHardwareInner(MessageParcel &data, MessageParcel &reply, MessageOption &option) { - (void)option; - std::string devId = data.ReadString(); - std::string dhId = data.ReadString(); - std::string version = data.ReadString(); - std::string attrs = data.ReadString(); - std::string reqId = data.ReadString(); - if (!CheckRegParams(devId, dhId, version, attrs, reqId)) { - DHLOGE("RegisterDistributedHardwareInner error: invalid parameter"); - return ERR_DH_SCREEN_INPUT_PARAM_INVALID; - } - EnableParam enableParam; - enableParam.version = version; - enableParam.attrs = attrs; - - int32_t ret = RegisterDistributedHardware(devId, dhId, enableParam, reqId); - reply.WriteInt32(ret); - return DH_SUCCESS; + Security::AccessToken::AccessTokenID callerToken = IPCSkeleton::GetCallingTokenID(); + int result = Security::AccessToken::AccessTokenKit::VerifyAccessToken(callerToken, + "ohos.permission.ENABLE_DISTRIBUTED_HARDWARE"); + if (result == Security::AccessToken::PERMISSION_GRANTED) { + (void)option; + std::string devId = data.ReadString(); + std::string dhId = data.ReadString(); + std::string version = data.ReadString(); + std::string attrs = data.ReadString(); + std::string reqId = data.ReadString(); + if (!CheckRegParams(devId, dhId, version, attrs, reqId)) { + DHLOGE("RegisterDistributedHardwareInner error: invalid parameter"); + return ERR_DH_SCREEN_INPUT_PARAM_INVALID; + } + EnableParam enableParam; + enableParam.version = version; + enableParam.attrs = attrs; + + int32_t ret = RegisterDistributedHardware(devId, dhId, enableParam, reqId); + reply.WriteInt32(ret); + return DH_SUCCESS; + } + DHLOGE("AccessToken err."); + return DSCREEN_INIT_ERR; } int32_t DScreenSourceStub::UnregisterDistributedHardwareInner(MessageParcel &data, MessageParcel &reply, MessageOption &option) { - (void)option; - std::string devId = data.ReadString(); - std::string dhId = data.ReadString(); - std::string reqId = data.ReadString(); - if (!CheckUnregParams(devId, dhId, reqId)) { - DHLOGE("UnregisterDistributedHardwareInner error: invalid parameter"); - return ERR_DH_SCREEN_INPUT_PARAM_INVALID; - } - - int32_t ret = UnregisterDistributedHardware(devId, dhId, reqId); - reply.WriteInt32(ret); - return DH_SUCCESS; + Security::AccessToken::AccessTokenID callerToken = IPCSkeleton::GetCallingTokenID(); + int result = Security::AccessToken::AccessTokenKit::VerifyAccessToken(callerToken, + "ohos.permission.ENABLE_DISTRIBUTED_HARDWARE"); + if (result == Security::AccessToken::PERMISSION_GRANTED) { + (void)option; + std::string devId = data.ReadString(); + std::string dhId = data.ReadString(); + std::string reqId = data.ReadString(); + if (!CheckUnregParams(devId, dhId, reqId)) { + DHLOGE("UnregisterDistributedHardwareInner error: invalid parameter"); + return ERR_DH_SCREEN_INPUT_PARAM_INVALID; + } + + int32_t ret = UnregisterDistributedHardware(devId, dhId, reqId); + reply.WriteInt32(ret); + return DH_SUCCESS; + } + DHLOGE("AccessToken err."); + return DSCREEN_INIT_ERR; } int32_t DScreenSourceStub::ConfigDistributedHardwareInner(MessageParcel &data, MessageParcel &reply, -- Gitee From 34a4662747fdaf534061d17a8abcd69c23a4f425 Mon Sep 17 00:00:00 2001 From: ry521 Date: Tue, 26 Sep 2023 07:44:43 +0000 Subject: [PATCH 02/15] update services/screenservice/sinkservice/dscreenservice/src/dscreen_sink_stub.cpp. Signed-off-by: ry521 --- .../sinkservice/dscreenservice/src/dscreen_sink_stub.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/services/screenservice/sinkservice/dscreenservice/src/dscreen_sink_stub.cpp b/services/screenservice/sinkservice/dscreenservice/src/dscreen_sink_stub.cpp index ac1e2494..deeeb02f 100644 --- a/services/screenservice/sinkservice/dscreenservice/src/dscreen_sink_stub.cpp +++ b/services/screenservice/sinkservice/dscreenservice/src/dscreen_sink_stub.cpp @@ -61,7 +61,7 @@ int32_t DScreenSinkStub::InitSinkInner(MessageParcel &data, MessageParcel &reply MessageOption &option) { Security::AccessToken::AccessTokenID callerToken = IPCSkeleton::GetCallingTokenID(); - int result = Security::AccessToken::AccessTokenKit::VerifyAccessToken(callerToken, + int32_t result = Security::AccessToken::AccessTokenKit::VerifyAccessToken(callerToken, "ohos.permission.ENABLE_DISTRIBUTED_HARDWARE"); if (result == Security::AccessToken::PERMISSION_GRANTED) { (void)option; @@ -82,7 +82,7 @@ int32_t DScreenSinkStub::ReleaseSinkInner(MessageParcel &data, MessageParcel &re MessageOption &option) { Security::AccessToken::AccessTokenID callerToken = IPCSkeleton::GetCallingTokenID(); - int result = Security::AccessToken::AccessTokenKit::VerifyAccessToken(callerToken, + int32_t result = Security::AccessToken::AccessTokenKit::VerifyAccessToken(callerToken, "ohos.permission.ENABLE_DISTRIBUTED_HARDWARE"); if (result == Security::AccessToken::PERMISSION_GRANTED) { (void)data; -- Gitee From 0a1389e8d71dc71d25ffedcda536c21047999ca4 Mon Sep 17 00:00:00 2001 From: ry521 Date: Tue, 26 Sep 2023 07:45:54 +0000 Subject: [PATCH 03/15] update services/screenservice/sourceservice/dscreenservice/src/dscreen_source_stub.cpp. Signed-off-by: ry521 --- .../sourceservice/dscreenservice/src/dscreen_source_stub.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/services/screenservice/sourceservice/dscreenservice/src/dscreen_source_stub.cpp b/services/screenservice/sourceservice/dscreenservice/src/dscreen_source_stub.cpp index 3533d70a..222ea5d7 100644 --- a/services/screenservice/sourceservice/dscreenservice/src/dscreen_source_stub.cpp +++ b/services/screenservice/sourceservice/dscreenservice/src/dscreen_source_stub.cpp @@ -115,7 +115,7 @@ int32_t DScreenSourceStub::RegisterDistributedHardwareInner(MessageParcel &data, MessageOption &option) { Security::AccessToken::AccessTokenID callerToken = IPCSkeleton::GetCallingTokenID(); - int result = Security::AccessToken::AccessTokenKit::VerifyAccessToken(callerToken, + int32_t result = Security::AccessToken::AccessTokenKit::VerifyAccessToken(callerToken, "ohos.permission.ENABLE_DISTRIBUTED_HARDWARE"); if (result == Security::AccessToken::PERMISSION_GRANTED) { (void)option; @@ -144,7 +144,7 @@ int32_t DScreenSourceStub::UnregisterDistributedHardwareInner(MessageParcel &dat MessageOption &option) { Security::AccessToken::AccessTokenID callerToken = IPCSkeleton::GetCallingTokenID(); - int result = Security::AccessToken::AccessTokenKit::VerifyAccessToken(callerToken, + int32_t result = Security::AccessToken::AccessTokenKit::VerifyAccessToken(callerToken, "ohos.permission.ENABLE_DISTRIBUTED_HARDWARE"); if (result == Security::AccessToken::PERMISSION_GRANTED) { (void)option; -- Gitee From 3d1d52cdbad2f9e702c387e9f1f7e7f464387935 Mon Sep 17 00:00:00 2001 From: ry521 Date: Wed, 27 Sep 2023 08:30:50 +0000 Subject: [PATCH 04/15] update services/screenservice/sourceservice/dscreenservice/include/dscreen_source_stub.h. Signed-off-by: ry521 --- .../sourceservice/dscreenservice/include/dscreen_source_stub.h | 1 + 1 file changed, 1 insertion(+) diff --git a/services/screenservice/sourceservice/dscreenservice/include/dscreen_source_stub.h b/services/screenservice/sourceservice/dscreenservice/include/dscreen_source_stub.h index 541290a0..2c0f1ebb 100644 --- a/services/screenservice/sourceservice/dscreenservice/include/dscreen_source_stub.h +++ b/services/screenservice/sourceservice/dscreenservice/include/dscreen_source_stub.h @@ -47,6 +47,7 @@ private: bool CheckUnregParams(const std::string &devId, const std::string &dhId, const std::string &reqId) const; bool CheckConfigParams(const std::string &devId, const std::string &dhId, const std::string &key, const std::string &value) const; + bool HasEnableDHPermission(); using DScreenSourceFunc = int32_t (DScreenSourceStub::*)(MessageParcel &data, MessageParcel &reply, MessageOption &option); std::map memberFuncMap_; -- Gitee From 6da278e5095b81bc613f9fe0048e272a4b76805c Mon Sep 17 00:00:00 2001 From: ry521 Date: Wed, 27 Sep 2023 09:02:25 +0000 Subject: [PATCH 05/15] update services/screenservice/sourceservice/dscreenservice/src/dscreen_source_stub.cpp. Signed-off-by: ry521 --- .../src/dscreen_source_stub.cpp | 161 +++++++++--------- 1 file changed, 79 insertions(+), 82 deletions(-) diff --git a/services/screenservice/sourceservice/dscreenservice/src/dscreen_source_stub.cpp b/services/screenservice/sourceservice/dscreenservice/src/dscreen_source_stub.cpp index 222ea5d7..34b476a6 100644 --- a/services/screenservice/sourceservice/dscreenservice/src/dscreen_source_stub.cpp +++ b/services/screenservice/sourceservice/dscreenservice/src/dscreen_source_stub.cpp @@ -43,6 +43,15 @@ DScreenSourceStub::DScreenSourceStub() &DScreenSourceStub::DScreenNotifyInner; } +bool DScreenSourceStub::HasEnableDHPermission() +{ + Security::AccessToken::AccessTokenID callerToken = IPCSkeleton::GetCallingTokenID(); + const std::string permissionName = "ohos.permission.ENABLE_DISTRIBUTED_HARDWARE"; + int32_t result = Security::AccessToken::AccessTokenKit::VerifyAccessToken(callerToken, + permissionName); + return (result = Security::AccessToken::PERMISSION_GRANTED); +} + int32_t DScreenSourceStub::OnRemoteRequest(uint32_t code, MessageParcel &data, MessageParcel &reply, MessageOption &option) { @@ -65,103 +74,91 @@ int32_t DScreenSourceStub::OnRemoteRequest(uint32_t code, MessageParcel &data, M int32_t DScreenSourceStub::InitSourceInner(MessageParcel &data, MessageParcel &reply, MessageOption &option) { - Security::AccessToken::AccessTokenID callerToken = IPCSkeleton::GetCallingTokenID(); - int result = Security::AccessToken::AccessTokenKit::VerifyAccessToken(callerToken, - "ohos.permission.ENABLE_DISTRIBUTED_HARDWARE"); - if (result == Security::AccessToken::PERMISSION_GRANTED) { - (void)option; - std::string param = data.ReadString(); - if (param.empty() || param.size() > PARAM_MAX_SIZE) { - DHLOGE("InitSourceInner error: invalid parameter"); - return ERR_DH_SCREEN_INPUT_PARAM_INVALID; - } - sptr remoteObject = data.ReadRemoteObject(); - if (remoteObject == nullptr) { - DHLOGE("Read param failed."); - return ERR_DH_SCREEN_SA_READPARAM_FAILED; - } - - sptr dScreenSourceCallbackProxy(new DScreenSourceCallbackProxy(remoteObject)); - if (dScreenSourceCallbackProxy == nullptr) { - DHLOGE("dScreenSourceCallbackProxy is nullptr."); - return ERR_DH_SCREEN_SA_READPARAM_FAILED; - } - int32_t ret = InitSource(param, dScreenSourceCallbackProxy); - reply.WriteInt32(ret); - return DH_SUCCESS; - } - DHLOGE("AccessToken err."); - return DSCREEN_INIT_ERR; + (void)option; + if (!HasEnableDHPermission) { + DHLOGE("Enable Permission inlvaliable"); + return DSCREEN_INIT_ERR; + } + std::string param = data.ReadString(); + if (param.empty() || param.size() > PARAM_MAX_SIZE) { + DHLOGE("InitSourceInner error: invalid parameter"); + return ERR_DH_SCREEN_INPUT_PARAM_INVALID; + } + sptr remoteObject = data.ReadRemoteObject(); + if (remoteObject == nullptr) { + DHLOGE("Read param failed."); + return ERR_DH_SCREEN_SA_READPARAM_FAILED; + } + + sptr dScreenSourceCallbackProxy(new DScreenSourceCallbackProxy(remoteObject)); + if (dScreenSourceCallbackProxy == nullptr) { + DHLOGE("dScreenSourceCallbackProxy is nullptr."); + return ERR_DH_SCREEN_SA_READPARAM_FAILED; + } + int32_t ret = InitSource(param, dScreenSourceCallbackProxy); + reply.WriteInt32(ret); + return DH_SUCCESS; } int32_t DScreenSourceStub::ReleaseSourceInner(MessageParcel &data, MessageParcel &reply, MessageOption &option) { - Security::AccessToken::AccessTokenID callerToken = IPCSkeleton::GetCallingTokenID(); - int result = Security::AccessToken::AccessTokenKit::VerifyAccessToken(callerToken, - "ohos.permission.ENABLE_DISTRIBUTED_HARDWARE"); - if (result == Security::AccessToken::PERMISSION_GRANTED) { - (void)data; - (void)option; - int32_t ret = ReleaseSource(); - reply.WriteInt32(ret); - return DH_SUCCESS; - } - DHLOGE("AccessToken err."); - return DSCREEN_INIT_ERR; + (void)data; + (void)option; + if (!HasEnableDHPermission) { + DHLOGE("Enable Permission inlvaliable"); + return DSCREEN_INIT_ERR; + } + int32_t ret = ReleaseSource(); + reply.WriteInt32(ret); + return DH_SUCCESS; } int32_t DScreenSourceStub::RegisterDistributedHardwareInner(MessageParcel &data, MessageParcel &reply, MessageOption &option) { - Security::AccessToken::AccessTokenID callerToken = IPCSkeleton::GetCallingTokenID(); - int32_t result = Security::AccessToken::AccessTokenKit::VerifyAccessToken(callerToken, - "ohos.permission.ENABLE_DISTRIBUTED_HARDWARE"); - if (result == Security::AccessToken::PERMISSION_GRANTED) { - (void)option; - std::string devId = data.ReadString(); - std::string dhId = data.ReadString(); - std::string version = data.ReadString(); - std::string attrs = data.ReadString(); - std::string reqId = data.ReadString(); - if (!CheckRegParams(devId, dhId, version, attrs, reqId)) { - DHLOGE("RegisterDistributedHardwareInner error: invalid parameter"); - return ERR_DH_SCREEN_INPUT_PARAM_INVALID; - } - EnableParam enableParam; - enableParam.version = version; - enableParam.attrs = attrs; - - int32_t ret = RegisterDistributedHardware(devId, dhId, enableParam, reqId); - reply.WriteInt32(ret); - return DH_SUCCESS; - } - DHLOGE("AccessToken err."); - return DSCREEN_INIT_ERR; + (void)option; + if (!HasEnableDHPermission) { + DHLOGE("Enable Permission inlvaliable"); + return DSCREEN_INIT_ERR; + } + std::string devId = data.ReadString(); + std::string dhId = data.ReadString(); + std::string version = data.ReadString(); + std::string attrs = data.ReadString(); + std::string reqId = data.ReadString(); + if (!CheckRegParams(devId, dhId, version, attrs, reqId)) { + DHLOGE("RegisterDistributedHardwareInner error: invalid parameter"); + return ERR_DH_SCREEN_INPUT_PARAM_INVALID; + } + EnableParam enableParam; + enableParam.version = version; + enableParam.attrs = attrs; + + int32_t ret = RegisterDistributedHardware(devId, dhId, enableParam, reqId); + reply.WriteInt32(ret); + return DH_SUCCESS; } int32_t DScreenSourceStub::UnregisterDistributedHardwareInner(MessageParcel &data, MessageParcel &reply, MessageOption &option) { - Security::AccessToken::AccessTokenID callerToken = IPCSkeleton::GetCallingTokenID(); - int32_t result = Security::AccessToken::AccessTokenKit::VerifyAccessToken(callerToken, - "ohos.permission.ENABLE_DISTRIBUTED_HARDWARE"); - if (result == Security::AccessToken::PERMISSION_GRANTED) { - (void)option; - std::string devId = data.ReadString(); - std::string dhId = data.ReadString(); - std::string reqId = data.ReadString(); - if (!CheckUnregParams(devId, dhId, reqId)) { - DHLOGE("UnregisterDistributedHardwareInner error: invalid parameter"); - return ERR_DH_SCREEN_INPUT_PARAM_INVALID; - } - - int32_t ret = UnregisterDistributedHardware(devId, dhId, reqId); - reply.WriteInt32(ret); - return DH_SUCCESS; - } - DHLOGE("AccessToken err."); - return DSCREEN_INIT_ERR; + (void)option; + if (!HasEnableDHPermission) { + DHLOGE("Enable Permission inlvaliable"); + return DSCREEN_INIT_ERR; + } + std::string devId = data.ReadString(); + std::string dhId = data.ReadString(); + std::string reqId = data.ReadString(); + if (!CheckUnregParams(devId, dhId, reqId)) { + DHLOGE("UnregisterDistributedHardwareInner error: invalid parameter"); + return ERR_DH_SCREEN_INPUT_PARAM_INVALID; + } + + int32_t ret = UnregisterDistributedHardware(devId, dhId, reqId); + reply.WriteInt32(ret); + return DH_SUCCESS; } int32_t DScreenSourceStub::ConfigDistributedHardwareInner(MessageParcel &data, MessageParcel &reply, -- Gitee From 32839a38e296eea852989d6cb5c89760a4db3f52 Mon Sep 17 00:00:00 2001 From: ry521 Date: Wed, 27 Sep 2023 09:04:58 +0000 Subject: [PATCH 06/15] update services/screenservice/sinkservice/dscreenservice/include/dscreen_sink_stub.h. Signed-off-by: ry521 --- .../sinkservice/dscreenservice/include/dscreen_sink_stub.h | 1 + 1 file changed, 1 insertion(+) diff --git a/services/screenservice/sinkservice/dscreenservice/include/dscreen_sink_stub.h b/services/screenservice/sinkservice/dscreenservice/include/dscreen_sink_stub.h index 7648328f..0259ebd8 100644 --- a/services/screenservice/sinkservice/dscreenservice/include/dscreen_sink_stub.h +++ b/services/screenservice/sinkservice/dscreenservice/include/dscreen_sink_stub.h @@ -45,6 +45,7 @@ private: MessageOption &option); int32_t DScreenNotifyInner(MessageParcel &data, MessageParcel &reply, MessageOption &option); + bool HasEnableDHPermission(); }; } // namespace DistributedHardware } // namespace OHOS -- Gitee From e882397783ebccb543cf2da90604b4bcb9a12ea6 Mon Sep 17 00:00:00 2001 From: ry521 Date: Wed, 27 Sep 2023 09:08:47 +0000 Subject: [PATCH 07/15] update services/screenservice/sinkservice/dscreenservice/src/dscreen_sink_stub.cpp. Signed-off-by: ry521 --- .../dscreenservice/src/dscreen_sink_stub.cpp | 55 ++++++++++--------- 1 file changed, 29 insertions(+), 26 deletions(-) diff --git a/services/screenservice/sinkservice/dscreenservice/src/dscreen_sink_stub.cpp b/services/screenservice/sinkservice/dscreenservice/src/dscreen_sink_stub.cpp index deeeb02f..bfa8ea72 100644 --- a/services/screenservice/sinkservice/dscreenservice/src/dscreen_sink_stub.cpp +++ b/services/screenservice/sinkservice/dscreenservice/src/dscreen_sink_stub.cpp @@ -38,6 +38,15 @@ DScreenSinkStub::DScreenSinkStub() &DScreenSinkStub::DScreenNotifyInner; } +bool DScreenSinkStub::HasEnableDHPermission() +{ + Security::AccessToken::AccessTokenID callerToken = IPCSkeleton::GetCallingTokenID(); + const std::string permissionName = "ohos.permission.ENABLE_DISTRIBUTED_HARDWARE"; + int32_t result = Security::AccessToken::AccessTokenKit::VerifyAccessToken(callerToken, + permissionName); + return (result = Security::AccessToken::PERMISSION_GRANTED); +} + int32_t DScreenSinkStub::OnRemoteRequest(uint32_t code, MessageParcel &data, MessageParcel &reply, MessageOption &option) { @@ -60,39 +69,33 @@ int32_t DScreenSinkStub::OnRemoteRequest(uint32_t code, MessageParcel &data, Mes int32_t DScreenSinkStub::InitSinkInner(MessageParcel &data, MessageParcel &reply, MessageOption &option) { - Security::AccessToken::AccessTokenID callerToken = IPCSkeleton::GetCallingTokenID(); - int32_t result = Security::AccessToken::AccessTokenKit::VerifyAccessToken(callerToken, - "ohos.permission.ENABLE_DISTRIBUTED_HARDWARE"); - if (result == Security::AccessToken::PERMISSION_GRANTED) { - (void)option; - std::string param = data.ReadString(); - if (param.empty() || param.size() > PARAM_MAX_SIZE) { - DHLOGE("InitSinkInner error: invalid parameter."); - return ERR_DH_SCREEN_INPUT_PARAM_INVALID; - } - int32_t ret = InitSink(param); - reply.WriteInt32(ret); - return DH_SUCCESS; + (void)option; + if (!HasEnableDHPermission) { + DHLOGE("Enable Permission inlvaliable"); + return DSCREEN_INIT_ERR; + } + std::string param = data.ReadString(); + if (param.empty() || param.size() > PARAM_MAX_SIZE) { + DHLOGE("InitSinkInner error: invalid parameter."); + return ERR_DH_SCREEN_INPUT_PARAM_INVALID; } - DHLOGE("AccessToken err."); - return DSCREEN_INIT_ERR; + int32_t ret = InitSink(param); + reply.WriteInt32(ret); + return DH_SUCCESS; } int32_t DScreenSinkStub::ReleaseSinkInner(MessageParcel &data, MessageParcel &reply, MessageOption &option) { - Security::AccessToken::AccessTokenID callerToken = IPCSkeleton::GetCallingTokenID(); - int32_t result = Security::AccessToken::AccessTokenKit::VerifyAccessToken(callerToken, - "ohos.permission.ENABLE_DISTRIBUTED_HARDWARE"); - if (result == Security::AccessToken::PERMISSION_GRANTED) { - (void)data; - (void)option; - int32_t ret = ReleaseSink(); - reply.WriteInt32(ret); - return DH_SUCCESS; + (void)data; + (void)option; + if (!HasEnableDHPermission) { + DHLOGE("Enable Permission inlvaliable"); + return DSCREEN_INIT_ERR; } - DHLOGE("AccessToken err."); - return DSCREEN_INIT_ERR; + int32_t ret = ReleaseSink(); + reply.WriteInt32(ret); + return DH_SUCCESS; } int32_t DScreenSinkStub::SubscribeDistributedHardwareInner(MessageParcel &data, MessageParcel &reply, -- Gitee From 8d4d8c076f243a8917a694fdc21e2fb8c466777c Mon Sep 17 00:00:00 2001 From: ry521 Date: Wed, 27 Sep 2023 09:13:41 +0000 Subject: [PATCH 08/15] update services/screenservice/sinkservice/dscreenservice/src/dscreen_sink_stub.cpp. Signed-off-by: ry521 --- .../sinkservice/dscreenservice/src/dscreen_sink_stub.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/screenservice/sinkservice/dscreenservice/src/dscreen_sink_stub.cpp b/services/screenservice/sinkservice/dscreenservice/src/dscreen_sink_stub.cpp index bfa8ea72..533e4dda 100644 --- a/services/screenservice/sinkservice/dscreenservice/src/dscreen_sink_stub.cpp +++ b/services/screenservice/sinkservice/dscreenservice/src/dscreen_sink_stub.cpp @@ -44,7 +44,7 @@ bool DScreenSinkStub::HasEnableDHPermission() const std::string permissionName = "ohos.permission.ENABLE_DISTRIBUTED_HARDWARE"; int32_t result = Security::AccessToken::AccessTokenKit::VerifyAccessToken(callerToken, permissionName); - return (result = Security::AccessToken::PERMISSION_GRANTED); + return (result == Security::AccessToken::PERMISSION_GRANTED); } int32_t DScreenSinkStub::OnRemoteRequest(uint32_t code, MessageParcel &data, MessageParcel &reply, -- Gitee From efa8cdf8faac1c2e95fba830712d0e933bbf9da5 Mon Sep 17 00:00:00 2001 From: ry521 Date: Wed, 27 Sep 2023 09:14:00 +0000 Subject: [PATCH 09/15] update services/screenservice/sourceservice/dscreenservice/src/dscreen_source_stub.cpp. Signed-off-by: ry521 --- .../sourceservice/dscreenservice/src/dscreen_source_stub.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/screenservice/sourceservice/dscreenservice/src/dscreen_source_stub.cpp b/services/screenservice/sourceservice/dscreenservice/src/dscreen_source_stub.cpp index 34b476a6..15f011f3 100644 --- a/services/screenservice/sourceservice/dscreenservice/src/dscreen_source_stub.cpp +++ b/services/screenservice/sourceservice/dscreenservice/src/dscreen_source_stub.cpp @@ -49,7 +49,7 @@ bool DScreenSourceStub::HasEnableDHPermission() const std::string permissionName = "ohos.permission.ENABLE_DISTRIBUTED_HARDWARE"; int32_t result = Security::AccessToken::AccessTokenKit::VerifyAccessToken(callerToken, permissionName); - return (result = Security::AccessToken::PERMISSION_GRANTED); + return (result == Security::AccessToken::PERMISSION_GRANTED); } int32_t DScreenSourceStub::OnRemoteRequest(uint32_t code, MessageParcel &data, MessageParcel &reply, -- Gitee From c636f9f43b837270dd60282ba11774adc7c7b2ca Mon Sep 17 00:00:00 2001 From: ry521 Date: Wed, 27 Sep 2023 09:22:37 +0000 Subject: [PATCH 10/15] update services/screenservice/sinkservice/dscreenservice/src/dscreen_sink_stub.cpp. Signed-off-by: ry521 --- .../sinkservice/dscreenservice/src/dscreen_sink_stub.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/services/screenservice/sinkservice/dscreenservice/src/dscreen_sink_stub.cpp b/services/screenservice/sinkservice/dscreenservice/src/dscreen_sink_stub.cpp index 533e4dda..85eb205b 100644 --- a/services/screenservice/sinkservice/dscreenservice/src/dscreen_sink_stub.cpp +++ b/services/screenservice/sinkservice/dscreenservice/src/dscreen_sink_stub.cpp @@ -70,7 +70,7 @@ int32_t DScreenSinkStub::InitSinkInner(MessageParcel &data, MessageParcel &reply MessageOption &option) { (void)option; - if (!HasEnableDHPermission) { + if (!HasEnableDHPermission()) { DHLOGE("Enable Permission inlvaliable"); return DSCREEN_INIT_ERR; } @@ -89,7 +89,7 @@ int32_t DScreenSinkStub::ReleaseSinkInner(MessageParcel &data, MessageParcel &re { (void)data; (void)option; - if (!HasEnableDHPermission) { + if (!HasEnableDHPermission()) { DHLOGE("Enable Permission inlvaliable"); return DSCREEN_INIT_ERR; } -- Gitee From 370d24acdea17845a6c4704a474d1cb7605daa6a Mon Sep 17 00:00:00 2001 From: ry521 Date: Wed, 27 Sep 2023 09:23:10 +0000 Subject: [PATCH 11/15] update services/screenservice/sourceservice/dscreenservice/src/dscreen_source_stub.cpp. Signed-off-by: ry521 --- .../dscreenservice/src/dscreen_source_stub.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/services/screenservice/sourceservice/dscreenservice/src/dscreen_source_stub.cpp b/services/screenservice/sourceservice/dscreenservice/src/dscreen_source_stub.cpp index 15f011f3..cfbf061d 100644 --- a/services/screenservice/sourceservice/dscreenservice/src/dscreen_source_stub.cpp +++ b/services/screenservice/sourceservice/dscreenservice/src/dscreen_source_stub.cpp @@ -75,7 +75,7 @@ int32_t DScreenSourceStub::InitSourceInner(MessageParcel &data, MessageParcel &r MessageOption &option) { (void)option; - if (!HasEnableDHPermission) { + if (!HasEnableDHPermission()) { DHLOGE("Enable Permission inlvaliable"); return DSCREEN_INIT_ERR; } @@ -105,7 +105,7 @@ int32_t DScreenSourceStub::ReleaseSourceInner(MessageParcel &data, MessageParcel { (void)data; (void)option; - if (!HasEnableDHPermission) { + if (!HasEnableDHPermission()) { DHLOGE("Enable Permission inlvaliable"); return DSCREEN_INIT_ERR; } @@ -118,7 +118,7 @@ int32_t DScreenSourceStub::RegisterDistributedHardwareInner(MessageParcel &data, MessageOption &option) { (void)option; - if (!HasEnableDHPermission) { + if (!HasEnableDHPermission()) { DHLOGE("Enable Permission inlvaliable"); return DSCREEN_INIT_ERR; } @@ -144,7 +144,7 @@ int32_t DScreenSourceStub::UnregisterDistributedHardwareInner(MessageParcel &dat MessageOption &option) { (void)option; - if (!HasEnableDHPermission) { + if (!HasEnableDHPermission()) { DHLOGE("Enable Permission inlvaliable"); return DSCREEN_INIT_ERR; } -- Gitee From 3dabaf10e5f49d06f028e104d06b76aeb6cdbce9 Mon Sep 17 00:00:00 2001 From: ry521 Date: Wed, 27 Sep 2023 12:45:38 +0000 Subject: [PATCH 12/15] update services/screenservice/sinkservice/dscreenservice/src/dscreen_sink_stub.cpp. Signed-off-by: ry521 --- .../sinkservice/dscreenservice/src/dscreen_sink_stub.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/services/screenservice/sinkservice/dscreenservice/src/dscreen_sink_stub.cpp b/services/screenservice/sinkservice/dscreenservice/src/dscreen_sink_stub.cpp index 85eb205b..aae21fdc 100644 --- a/services/screenservice/sinkservice/dscreenservice/src/dscreen_sink_stub.cpp +++ b/services/screenservice/sinkservice/dscreenservice/src/dscreen_sink_stub.cpp @@ -71,7 +71,7 @@ int32_t DScreenSinkStub::InitSinkInner(MessageParcel &data, MessageParcel &reply { (void)option; if (!HasEnableDHPermission()) { - DHLOGE("Enable Permission inlvaliable"); + DHLOGE("Enable Permission invalid"); return DSCREEN_INIT_ERR; } std::string param = data.ReadString(); @@ -90,7 +90,7 @@ int32_t DScreenSinkStub::ReleaseSinkInner(MessageParcel &data, MessageParcel &re (void)data; (void)option; if (!HasEnableDHPermission()) { - DHLOGE("Enable Permission inlvaliable"); + DHLOGE("Enable Permission invalid"); return DSCREEN_INIT_ERR; } int32_t ret = ReleaseSink(); -- Gitee From 4d44a15f0d5fab70efd4e1a6318f35ff7d88622c Mon Sep 17 00:00:00 2001 From: ry521 Date: Wed, 27 Sep 2023 12:46:50 +0000 Subject: [PATCH 13/15] update services/screenservice/sourceservice/dscreenservice/src/dscreen_source_stub.cpp. Signed-off-by: ry521 --- .../dscreenservice/src/dscreen_source_stub.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/services/screenservice/sourceservice/dscreenservice/src/dscreen_source_stub.cpp b/services/screenservice/sourceservice/dscreenservice/src/dscreen_source_stub.cpp index cfbf061d..9cf7a27d 100644 --- a/services/screenservice/sourceservice/dscreenservice/src/dscreen_source_stub.cpp +++ b/services/screenservice/sourceservice/dscreenservice/src/dscreen_source_stub.cpp @@ -76,7 +76,7 @@ int32_t DScreenSourceStub::InitSourceInner(MessageParcel &data, MessageParcel &r { (void)option; if (!HasEnableDHPermission()) { - DHLOGE("Enable Permission inlvaliable"); + DHLOGE("Enable Permission invalid"); return DSCREEN_INIT_ERR; } std::string param = data.ReadString(); @@ -106,7 +106,7 @@ int32_t DScreenSourceStub::ReleaseSourceInner(MessageParcel &data, MessageParcel (void)data; (void)option; if (!HasEnableDHPermission()) { - DHLOGE("Enable Permission inlvaliable"); + DHLOGE("Enable Permission invalid"); return DSCREEN_INIT_ERR; } int32_t ret = ReleaseSource(); @@ -119,7 +119,7 @@ int32_t DScreenSourceStub::RegisterDistributedHardwareInner(MessageParcel &data, { (void)option; if (!HasEnableDHPermission()) { - DHLOGE("Enable Permission inlvaliable"); + DHLOGE("Enable Permission invalid"); return DSCREEN_INIT_ERR; } std::string devId = data.ReadString(); @@ -145,7 +145,7 @@ int32_t DScreenSourceStub::UnregisterDistributedHardwareInner(MessageParcel &dat { (void)option; if (!HasEnableDHPermission()) { - DHLOGE("Enable Permission inlvaliable"); + DHLOGE("Enable Permission invalid"); return DSCREEN_INIT_ERR; } std::string devId = data.ReadString(); -- Gitee From 375ac78612559f47c1d9ef07e8b2b53b4a2bb22c Mon Sep 17 00:00:00 2001 From: ry521 Date: Thu, 28 Sep 2023 02:16:11 +0000 Subject: [PATCH 14/15] update services/screenservice/sourceservice/dscreenservice/src/dscreen_source_stub.cpp. Signed-off-by: ry521 --- .../dscreenservice/src/dscreen_source_stub.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/services/screenservice/sourceservice/dscreenservice/src/dscreen_source_stub.cpp b/services/screenservice/sourceservice/dscreenservice/src/dscreen_source_stub.cpp index 9cf7a27d..7e6f242e 100644 --- a/services/screenservice/sourceservice/dscreenservice/src/dscreen_source_stub.cpp +++ b/services/screenservice/sourceservice/dscreenservice/src/dscreen_source_stub.cpp @@ -76,7 +76,7 @@ int32_t DScreenSourceStub::InitSourceInner(MessageParcel &data, MessageParcel &r { (void)option; if (!HasEnableDHPermission()) { - DHLOGE("Enable Permission invalid"); + DHLOGE("The caller has no ENABLE_DISTRIBUTED_HARDWARE permission."); return DSCREEN_INIT_ERR; } std::string param = data.ReadString(); @@ -97,7 +97,7 @@ int32_t DScreenSourceStub::InitSourceInner(MessageParcel &data, MessageParcel &r } int32_t ret = InitSource(param, dScreenSourceCallbackProxy); reply.WriteInt32(ret); - return DH_SUCCESS; + return DH_SUCCESS; } int32_t DScreenSourceStub::ReleaseSourceInner(MessageParcel &data, MessageParcel &reply, @@ -106,7 +106,7 @@ int32_t DScreenSourceStub::ReleaseSourceInner(MessageParcel &data, MessageParcel (void)data; (void)option; if (!HasEnableDHPermission()) { - DHLOGE("Enable Permission invalid"); + DHLOGE("The caller has no ENABLE_DISTRIBUTED_HARDWARE permission."); return DSCREEN_INIT_ERR; } int32_t ret = ReleaseSource(); @@ -119,7 +119,7 @@ int32_t DScreenSourceStub::RegisterDistributedHardwareInner(MessageParcel &data, { (void)option; if (!HasEnableDHPermission()) { - DHLOGE("Enable Permission invalid"); + DHLOGE("The caller has no ENABLE_DISTRIBUTED_HARDWARE permission."); return DSCREEN_INIT_ERR; } std::string devId = data.ReadString(); @@ -145,7 +145,7 @@ int32_t DScreenSourceStub::UnregisterDistributedHardwareInner(MessageParcel &dat { (void)option; if (!HasEnableDHPermission()) { - DHLOGE("Enable Permission invalid"); + DHLOGE("The caller has no ENABLE_DISTRIBUTED_HARDWARE permission."); return DSCREEN_INIT_ERR; } std::string devId = data.ReadString(); -- Gitee From 8553575e6f8304b5ef6537dd222c2cceceafe706 Mon Sep 17 00:00:00 2001 From: ry521 Date: Thu, 28 Sep 2023 02:16:53 +0000 Subject: [PATCH 15/15] update services/screenservice/sinkservice/dscreenservice/src/dscreen_sink_stub.cpp. Signed-off-by: ry521 --- .../sinkservice/dscreenservice/src/dscreen_sink_stub.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/services/screenservice/sinkservice/dscreenservice/src/dscreen_sink_stub.cpp b/services/screenservice/sinkservice/dscreenservice/src/dscreen_sink_stub.cpp index aae21fdc..0df80cb3 100644 --- a/services/screenservice/sinkservice/dscreenservice/src/dscreen_sink_stub.cpp +++ b/services/screenservice/sinkservice/dscreenservice/src/dscreen_sink_stub.cpp @@ -71,7 +71,7 @@ int32_t DScreenSinkStub::InitSinkInner(MessageParcel &data, MessageParcel &reply { (void)option; if (!HasEnableDHPermission()) { - DHLOGE("Enable Permission invalid"); + DHLOGE("The caller has no ENABLE_DISTRIBUTED_HARDWARE permission."); return DSCREEN_INIT_ERR; } std::string param = data.ReadString(); @@ -90,7 +90,7 @@ int32_t DScreenSinkStub::ReleaseSinkInner(MessageParcel &data, MessageParcel &re (void)data; (void)option; if (!HasEnableDHPermission()) { - DHLOGE("Enable Permission invalid"); + DHLOGE("The caller has no ENABLE_DISTRIBUTED_HARDWARE permission."); return DSCREEN_INIT_ERR; } int32_t ret = ReleaseSink(); -- Gitee