From ba606ffab63f52f901f37aaccff63834f7852f97 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=B7=8D?= Date: Sat, 8 Feb 2025 09:27:45 +0800 Subject: [PATCH 1/6] =?UTF-8?q?=E6=A3=80=E9=AA=8C=E5=8F=AF=E4=BF=A1?= =?UTF-8?q?=E5=85=B3=E7=B3=BB=E9=87=8D=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 李巍 --- .../src/deviceprofile_connector.cpp | 36 +++++++++++-------- 1 file changed, 21 insertions(+), 15 deletions(-) diff --git a/commondependency/src/deviceprofile_connector.cpp b/commondependency/src/deviceprofile_connector.cpp index 6d57f99bc..ba141fb05 100644 --- a/commondependency/src/deviceprofile_connector.cpp +++ b/commondependency/src/deviceprofile_connector.cpp @@ -891,29 +891,35 @@ std::vector GetACLByDeviceIdAndUserId(std::vector profilesFilter; for (auto &item : profiles) { - if (item.GetAccesser().GetAccesserUserId() == caller.userId && - item.GetAccesser().GetAccesserDeviceId() == srcUdid && + // cannot consider multi-user for old version + if (item.GetAccesser().GetAccesserUserId() == 0 || item.GetAccesser().GetAccesserUserId() == -1 || + item.GetAccessee().GetAccesseeUserId() == 0 || item.GetAccessee().GetAccesseeUserId() == -1 || + caller.userId == 0 || callee.userId == 0) { + if (item.GetAccesser().GetAccesserDeviceId() == srcUdid && item.GetAccessee().GetAccesseeDeviceId() == sinkUdid) { - if (callee.userId != 0 && callee.userId == item.GetAccessee().GetAccesseeUserId()) { profilesFilter.push_back(item); continue; - } else if (callee.userId == 0 || item.GetAccessee().GetAccesseeUserId() == -1) { - profilesFilter.push_back(item); - continue; - } - } - if ((item.GetAccessee().GetAccesseeUserId() == caller.userId || - item.GetAccessee().GetAccesseeUserId() == -1) && - item.GetAccessee().GetAccesseeDeviceId() == srcUdid && + } else if (item.GetAccessee().GetAccesseeDeviceId() == srcUdid && item.GetAccesser().GetAccesserDeviceId() == sinkUdid) { - if (callee.userId != 0 && callee.userId == item.GetAccesser().GetAccesserUserId()) { - profilesFilter.push_back(item); - continue; - } else if (callee.userId == 0 || item.GetAccesser().GetAccesserUserId() == -1) { profilesFilter.push_back(item); continue; } } + // consider multi-user for new version + if (item.GetAccesser().GetAccesserDeviceId() == srcUdid && + item.GetAccesser().GetAccesserUserId() == caller.userId && + item.GetAccessee().GetAccesseeDeviceId() == sinkUdid && + item.GetAccessee().GetAccesseeUserId() == callee.userId) { + profilesFilter.push_back(item); + continue; + } + if (item.GetAccesser().GetAccesserDeviceId() == sinkUdid && + item.GetAccesser().GetAccesserUserId() == callee.userId && + item.GetAccessee().GetAccesseeDeviceId() == srcUdid && + item.GetAccessee().GetAccesseeUserId() == caller.userId) { + profilesFilter.push_back(item); + continue; + } } return profilesFilter; } -- Gitee From 653cde02b92599e6855d4f544fd0d750e1ca8de8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=B7=8D?= Date: Mon, 10 Feb 2025 10:13:20 +0800 Subject: [PATCH 2/6] =?UTF-8?q?=E5=8E=BB=E9=99=A4caller/callee=E4=BC=A0?= =?UTF-8?q?=E9=80=92=E5=8F=82=E6=95=B0=E4=B8=8D=E8=A7=84=E8=8C=83=E7=9A=84?= =?UTF-8?q?=E6=83=85=E6=99=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 李巍 --- commondependency/src/deviceprofile_connector.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/commondependency/src/deviceprofile_connector.cpp b/commondependency/src/deviceprofile_connector.cpp index ba141fb05..dbf514c42 100644 --- a/commondependency/src/deviceprofile_connector.cpp +++ b/commondependency/src/deviceprofile_connector.cpp @@ -893,8 +893,7 @@ std::vector GetACLByDeviceIdAndUserId(std::vector Date: Sat, 15 Feb 2025 11:25:24 +0800 Subject: [PATCH 3/6] =?UTF-8?q?=E6=A0=A1=E9=AA=8C=E5=8F=AF=E4=BF=A1?= =?UTF-8?q?=E5=85=B3=E7=B3=BB=E9=87=8D=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 李巍 --- .../src/deviceprofile_connector.cpp | 50 +++++++++++++++---- 1 file changed, 39 insertions(+), 11 deletions(-) diff --git a/commondependency/src/deviceprofile_connector.cpp b/commondependency/src/deviceprofile_connector.cpp index dbf514c42..cb8c4c6e0 100644 --- a/commondependency/src/deviceprofile_connector.cpp +++ b/commondependency/src/deviceprofile_connector.cpp @@ -892,30 +892,58 @@ std::vector GetACLByDeviceIdAndUserId(std::vector profilesFilter; for (auto &item : profiles) { // cannot consider multi-user for old version - if (item.GetAccesser().GetAccesserUserId() == 0 || item.GetAccesser().GetAccesserUserId() == -1 || - item.GetAccessee().GetAccesseeUserId() == 0 || item.GetAccessee().GetAccesseeUserId() == -1) { + // the device is accesser + if (item.GetAccesser().GetAccesserUserId() != 0 && + item.GetAccesser().GetAccesserUserId() != -1 && + (item.GetAccessee().GetAccesseeUserId() == 0 || item.GetAccessee().GetAccesseeUserId() == -1)) { + // caller is accesser, callee is accessee if (item.GetAccesser().GetAccesserDeviceId() == srcUdid && - item.GetAccessee().GetAccesseeDeviceId() == sinkUdid) { + item.GetAccesser().GetAccesserUserId() == caller.userId && + item.GetAccessee().GetAccesseeDeviceId() == sinkUdid) { profilesFilter.push_back(item); continue; - } else if (item.GetAccessee().GetAccesseeDeviceId() == srcUdid && - item.GetAccesser().GetAccesserDeviceId() == sinkUdid) { + } + // caller is accessee, callee is accesser + if (item.GetAccesser().GetAccesserDeviceId() == sinkUdid && + item.GetAccesser().GetAccesserUserId() == callee.userId && + item.GetAccessee().GetAccesseeDeviceId() == srcUdid) { + profilesFilter.push_back(item); + continue; + } + } + // the device is accessee + if ((item.GetAccesser().GetAccesserUserId() == 0 || item.GetAccesser().GetAccesserUserId() == -1) && + item.GetAccessee().GetAccesseeUserId() != 0 && + item.GetAccessee().GetAccesseeUserId() != -1) { + // caller is accesser, callee is accessee + if (item.GetAccesser().GetAccesserDeviceId() == srcUdid && + item.GetAccessee().GetAccesseeDeviceId() == sinkUdid && + item.GetAccessee().GetAccesseeUserId() == callee.userId) { + profilesFilter.push_back(item); + continue; + } + // caller is accessee, callee is accesser + if (item.GetAccesser().GetAccesserDeviceId() == sinkUdid && + item.GetAccessee().GetAccesseeDeviceId() == srcUdid && + item.GetAccessee().GetAccesseeUserId() == caller.userId) { profilesFilter.push_back(item); continue; } } // consider multi-user for new version + // caller is accesser, callee is accessee if (item.GetAccesser().GetAccesserDeviceId() == srcUdid && - item.GetAccesser().GetAccesserUserId() == caller.userId && - item.GetAccessee().GetAccesseeDeviceId() == sinkUdid && - item.GetAccessee().GetAccesseeUserId() == callee.userId) { + item.GetAccesser().GetAccesserUserId() == caller.userId && + item.GetAccessee().GetAccesseeDeviceId() == sinkUdid && + item.GetAccessee().GetAccesseeUserId() == callee.userId) { profilesFilter.push_back(item); continue; } + // caller is accessee, callee is accesser if (item.GetAccesser().GetAccesserDeviceId() == sinkUdid && - item.GetAccesser().GetAccesserUserId() == callee.userId && - item.GetAccessee().GetAccesseeDeviceId() == srcUdid && - item.GetAccessee().GetAccesseeUserId() == caller.userId) { + item.GetAccesser().GetAccesserUserId() == callee.userId && + item.GetAccessee().GetAccesseeDeviceId() == srcUdid && + item.GetAccessee().GetAccesseeUserId() == caller.userId) { profilesFilter.push_back(item); continue; } -- Gitee From 6eca41da5fd78b83322bf48aacc942a798b231d3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=B7=8D?= Date: Sat, 15 Feb 2025 16:34:17 +0800 Subject: [PATCH 4/6] =?UTF-8?q?=E6=A0=A1=E9=AA=8C=E5=8F=AF=E4=BF=A1?= =?UTF-8?q?=E5=85=B3=E7=B3=BB=E9=87=8D=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 李巍 --- .../src/deviceprofile_connector.cpp | 127 ++++++++++-------- 1 file changed, 72 insertions(+), 55 deletions(-) diff --git a/commondependency/src/deviceprofile_connector.cpp b/commondependency/src/deviceprofile_connector.cpp index cb8c4c6e0..bc76034dd 100644 --- a/commondependency/src/deviceprofile_connector.cpp +++ b/commondependency/src/deviceprofile_connector.cpp @@ -886,66 +886,83 @@ int32_t DeviceProfileConnector::IsSameAccount(const std::string &udid) return ERR_DM_FAILED; } -std::vector GetACLByDeviceIdAndUserId(std::vector profiles, - const DmAccessCaller &caller, const std::string &srcUdid, const DmAccessCallee &callee, const std::string &sinkUdid) -{ - std::vector profilesFilter; - for (auto &item : profiles) { - // cannot consider multi-user for old version - // the device is accesser - if (item.GetAccesser().GetAccesserUserId() != 0 && - item.GetAccesser().GetAccesserUserId() != -1 && - (item.GetAccessee().GetAccesseeUserId() == 0 || item.GetAccessee().GetAccesseeUserId() == -1)) { - // caller is accesser, callee is accessee - if (item.GetAccesser().GetAccesserDeviceId() == srcUdid && - item.GetAccesser().GetAccesserUserId() == caller.userId && - item.GetAccessee().GetAccesseeDeviceId() == sinkUdid) { - profilesFilter.push_back(item); - continue; - } - // caller is accessee, callee is accesser - if (item.GetAccesser().GetAccesserDeviceId() == sinkUdid && - item.GetAccesser().GetAccesserUserId() == callee.userId && - item.GetAccessee().GetAccesseeDeviceId() == srcUdid) { - profilesFilter.push_back(item); - continue; - } +bool checkACLInOldVersion(AccessControlProfile& profile, const DmAccessCaller &caller, + const std::string &srcUdid, const DmAccessCallee &callee, const std::string &sinkUdid) +{ + // cannot consider multi-user for old version + // the device is src + if (profile.GetAccesser().GetAccesserUserId() != 0 && + profile.GetAccesser().GetAccesserUserId() != -1 && + (profile.GetAccessee().GetAccesseeUserId() == 0 || profile.GetAccessee().GetAccesseeUserId() == -1)) { + // caller is accesser, callee is accessee + if (profile.GetAccesser().GetAccesserDeviceId() == srcUdid && + profile.GetAccesser().GetAccesserUserId() == caller.userId && + profile.GetAccessee().GetAccesseeDeviceId() == sinkUdid) { + LOGI("old version, the device is src, caller is accesser, callee is accessee"); + return true; } - // the device is accessee - if ((item.GetAccesser().GetAccesserUserId() == 0 || item.GetAccesser().GetAccesserUserId() == -1) && - item.GetAccessee().GetAccesseeUserId() != 0 && - item.GetAccessee().GetAccesseeUserId() != -1) { - // caller is accesser, callee is accessee - if (item.GetAccesser().GetAccesserDeviceId() == srcUdid && - item.GetAccessee().GetAccesseeDeviceId() == sinkUdid && - item.GetAccessee().GetAccesseeUserId() == callee.userId) { - profilesFilter.push_back(item); - continue; - } - // caller is accessee, callee is accesser - if (item.GetAccesser().GetAccesserDeviceId() == sinkUdid && - item.GetAccessee().GetAccesseeDeviceId() == srcUdid && - item.GetAccessee().GetAccesseeUserId() == caller.userId) { - profilesFilter.push_back(item); - continue; - } + // caller is accessee, callee is accesser + if (profile.GetAccesser().GetAccesserDeviceId() == sinkUdid && + profile.GetAccesser().GetAccesserUserId() == callee.userId && + profile.GetAccessee().GetAccesseeDeviceId() == srcUdid) { + LOGI("old version, the device is src, caller is accessee, callee is accesser"); + return true; } - // consider multi-user for new version + } + // the device is sink + if ((profile.GetAccesser().GetAccesserUserId() == 0 || profile.GetAccesser().GetAccesserUserId() == -1) && + profile.GetAccessee().GetAccesseeUserId() != 0 && + profile.GetAccessee().GetAccesseeUserId() != -1) { // caller is accesser, callee is accessee - if (item.GetAccesser().GetAccesserDeviceId() == srcUdid && - item.GetAccesser().GetAccesserUserId() == caller.userId && - item.GetAccessee().GetAccesseeDeviceId() == sinkUdid && - item.GetAccessee().GetAccesseeUserId() == callee.userId) { - profilesFilter.push_back(item); - continue; + if (profile.GetAccesser().GetAccesserDeviceId() == srcUdid && + profile.GetAccessee().GetAccesseeDeviceId() == sinkUdid && + profile.GetAccessee().GetAccesseeUserId() == callee.userId) { + LOGI("old version, the device is sink, caller is accesser, callee is accessee"); + return true; } // caller is accessee, callee is accesser - if (item.GetAccesser().GetAccesserDeviceId() == sinkUdid && - item.GetAccesser().GetAccesserUserId() == callee.userId && - item.GetAccessee().GetAccesseeDeviceId() == srcUdid && - item.GetAccessee().GetAccesseeUserId() == caller.userId) { - profilesFilter.push_back(item); - continue; + if (profile.GetAccesser().GetAccesserDeviceId() == sinkUdid && + profile.GetAccessee().GetAccesseeDeviceId() == srcUdid && + profile.GetAccessee().GetAccesseeUserId() == caller.userId) { + LOGI("old version, the device is sink, caller is accessee, callee is accesser"); + return true; + } + } + return false; +} + +bool checkACLInNewVersion(AccessControlProfile& profile, const DmAccessCaller &caller, + const std::string &srcUdid, const DmAccessCallee &callee, const std::string &sinkUdid) +{ + // consider multi-user for new version + // caller is accesser, callee is accessee + if (profile.GetAccesser().GetAccesserDeviceId() == srcUdid && + profile.GetAccesser().GetAccesserUserId() == caller.userId && + profile.GetAccessee().GetAccesseeDeviceId() == sinkUdid && + profile.GetAccessee().GetAccesseeUserId() == callee.userId) { + LOGI("new version, caller is accesser, callee is accessee"); + return true; + } + // caller is accessee, callee is accesser + if (profile.GetAccesser().GetAccesserDeviceId() == sinkUdid && + profile.GetAccesser().GetAccesserUserId() == callee.userId && + profile.GetAccessee().GetAccesseeDeviceId() == srcUdid && + profile.GetAccessee().GetAccesseeUserId() == caller.userId) { + LOGI("new version, caller is accessee, callee is accesser"); + return true; + } + return false; +} + +std::vector GetACLByDeviceIdAndUserId(std::vector profiles, + const DmAccessCaller &caller, const std::string &srcUdid, const DmAccessCallee &callee, const std::string &sinkUdid) +{ + std::vector profilesFilter; + for (int32_t i = 0; i < profiles.size(); i++) { + AccessControlProfile profile = profiles[i]; + if (checkACLInOldVersion(profile, caller, srcUdid, callee, sinkUdid) || + checkACLInNewVersion(profile, caller, srcUdid, callee, sinkUdid)) { + profilesFilter.push_back(profile); } } return profilesFilter; -- Gitee From 6c0535b104dfa454f3c5612bbfe991fcb9be99dd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=B7=8D?= Date: Sat, 15 Feb 2025 16:57:31 +0800 Subject: [PATCH 5/6] =?UTF-8?q?=E9=87=8D=E6=9E=84=E6=A0=A1=E9=AA=8C?= =?UTF-8?q?=E5=8F=AF=E4=BF=A1=E5=85=B3=E7=B3=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 李巍 --- .../src/deviceprofile_connector.cpp | 34 ++++++++++++++----- 1 file changed, 25 insertions(+), 9 deletions(-) diff --git a/commondependency/src/deviceprofile_connector.cpp b/commondependency/src/deviceprofile_connector.cpp index bc76034dd..addec3f7a 100644 --- a/commondependency/src/deviceprofile_connector.cpp +++ b/commondependency/src/deviceprofile_connector.cpp @@ -886,11 +886,10 @@ int32_t DeviceProfileConnector::IsSameAccount(const std::string &udid) return ERR_DM_FAILED; } -bool checkACLInOldVersion(AccessControlProfile& profile, const DmAccessCaller &caller, - const std::string &srcUdid, const DmAccessCallee &callee, const std::string &sinkUdid) +bool checkAccesserACL(AccessControlProfile& profile, const DmAccessCaller &caller, + const std::string &srcUdid, const DmAccessCallee &callee, const std::string &sinkUdid) { - // cannot consider multi-user for old version - // the device is src + // the device is accesser if (profile.GetAccesser().GetAccesserUserId() != 0 && profile.GetAccesser().GetAccesserUserId() != -1 && (profile.GetAccessee().GetAccesseeUserId() == 0 || profile.GetAccessee().GetAccesseeUserId() == -1)) { @@ -898,18 +897,24 @@ bool checkACLInOldVersion(AccessControlProfile& profile, const DmAccessCaller &c if (profile.GetAccesser().GetAccesserDeviceId() == srcUdid && profile.GetAccesser().GetAccesserUserId() == caller.userId && profile.GetAccessee().GetAccesseeDeviceId() == sinkUdid) { - LOGI("old version, the device is src, caller is accesser, callee is accessee"); + LOGI("old version, the device is accesser, caller is accesser, callee is accessee"); return true; } // caller is accessee, callee is accesser if (profile.GetAccesser().GetAccesserDeviceId() == sinkUdid && profile.GetAccesser().GetAccesserUserId() == callee.userId && profile.GetAccessee().GetAccesseeDeviceId() == srcUdid) { - LOGI("old version, the device is src, caller is accessee, callee is accesser"); + LOGI("old version, the device is accesser, caller is accessee, callee is accesser"); return true; } } - // the device is sink + return false; +} + +bool checkAccesseeACL(AccessControlProfile& profile, const DmAccessCaller &caller, + const std::string &srcUdid, const DmAccessCallee &callee, const std::string &sinkUdid) +{ + // the device is accessee if ((profile.GetAccesser().GetAccesserUserId() == 0 || profile.GetAccesser().GetAccesserUserId() == -1) && profile.GetAccessee().GetAccesseeUserId() != 0 && profile.GetAccessee().GetAccesseeUserId() != -1) { @@ -917,20 +922,31 @@ bool checkACLInOldVersion(AccessControlProfile& profile, const DmAccessCaller &c if (profile.GetAccesser().GetAccesserDeviceId() == srcUdid && profile.GetAccessee().GetAccesseeDeviceId() == sinkUdid && profile.GetAccessee().GetAccesseeUserId() == callee.userId) { - LOGI("old version, the device is sink, caller is accesser, callee is accessee"); + LOGI("old version, the device is accessee, caller is accesser, callee is accessee"); return true; } // caller is accessee, callee is accesser if (profile.GetAccesser().GetAccesserDeviceId() == sinkUdid && profile.GetAccessee().GetAccesseeDeviceId() == srcUdid && profile.GetAccessee().GetAccesseeUserId() == caller.userId) { - LOGI("old version, the device is sink, caller is accessee, callee is accesser"); + LOGI("old version, the device is accessee, caller is accessee, callee is accesser"); return true; } } return false; } +bool checkACLInOldVersion(AccessControlProfile& profile, const DmAccessCaller &caller, + const std::string &srcUdid, const DmAccessCallee &callee, const std::string &sinkUdid) +{ + // cannot consider multi-user for old version + if (checkAccesserACL(profile, caller, srcUdid, callee, sinkUdid) || + checkAccesseeACL(profile, caller, srcUdid, callee, sinkUdid)) { + return true; + } + return false; +} + bool checkACLInNewVersion(AccessControlProfile& profile, const DmAccessCaller &caller, const std::string &srcUdid, const DmAccessCallee &callee, const std::string &sinkUdid) { -- Gitee From 591a1d79f2fc901227f71ce7408de9508ee83af9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=B7=8D?= Date: Sat, 15 Feb 2025 17:19:15 +0800 Subject: [PATCH 6/6] =?UTF-8?q?=E5=8E=BB=E6=8E=89=E5=87=BD=E6=95=B0?= =?UTF-8?q?=E6=9C=AB=E5=B0=BE=E7=A9=BA=E6=A0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 李巍 --- commondependency/src/deviceprofile_connector.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/commondependency/src/deviceprofile_connector.cpp b/commondependency/src/deviceprofile_connector.cpp index addec3f7a..950276a94 100644 --- a/commondependency/src/deviceprofile_connector.cpp +++ b/commondependency/src/deviceprofile_connector.cpp @@ -887,7 +887,7 @@ int32_t DeviceProfileConnector::IsSameAccount(const std::string &udid) } bool checkAccesserACL(AccessControlProfile& profile, const DmAccessCaller &caller, - const std::string &srcUdid, const DmAccessCallee &callee, const std::string &sinkUdid) + const std::string &srcUdid, const DmAccessCallee &callee, const std::string &sinkUdid) { // the device is accesser if (profile.GetAccesser().GetAccesserUserId() != 0 && -- Gitee