diff --git a/commondependency/include/deviceprofile_connector.h b/commondependency/include/deviceprofile_connector.h index fdc2551374811df93c68ced3a4e255485e045b0e..b6e6df3ec18feb3880ea38abefe2ed3e8a2336d9 100644 --- a/commondependency/include/deviceprofile_connector.h +++ b/commondependency/include/deviceprofile_connector.h @@ -343,7 +343,7 @@ private: const std::vector &profilesFilter, const int32_t &userId); int32_t GetAuthForm(DistributedDeviceProfile::AccessControlProfile profiles, const std::string &trustDev, const std::string &reqDev); - bool CheckAuthFormProxyTokenId(const std::string &extraStr); + bool CheckAuthFormProxyTokenId(const std::string pkgName, const std::string &extraStr); int32_t CheckAuthForm(DmAuthForm form, DistributedDeviceProfile::AccessControlProfile profiles, DmDiscoveryInfo discoveryInfo); bool SingleUserProcess(const DistributedDeviceProfile::AccessControlProfile &profile, const DmAccessCaller &caller, diff --git a/commondependency/src/deviceprofile_connector.cpp b/commondependency/src/deviceprofile_connector.cpp index 455f79190de3ec94e36e9cef7e0e563b2c4545e1..132a0a795028e47908e2b7245565dc99b7f9f611 100644 --- a/commondependency/src/deviceprofile_connector.cpp +++ b/commondependency/src/deviceprofile_connector.cpp @@ -787,12 +787,16 @@ int32_t DeviceProfileConnector::GetDeviceAclParam(DmDiscoveryInfo discoveryInfo, return DM_OK; } -bool DeviceProfileConnector::CheckAuthFormProxyTokenId(const std::string &extraStr) +bool DeviceProfileConnector::CheckAuthFormProxyTokenId(const std::string pkgName, const std::string &extraStr) { std::vector proxyTokenIdVec = JsonStrHandle::GetInstance().GetProxyTokenIdByExtra(extraStr); int64_t callingTokenId = static_cast(IPCSkeleton::GetCallingTokenID()); for (auto &proxyTokenId : proxyTokenIdVec) { - if (callingTokenId == proxyTokenId) { + std::string proxyBundleName; + if (AppManager::GetInstance().GetBundleNameByTokenId(proxyTokenId, proxyBundleName) != DM_OK) { + continue; + } + if (callingTokenId == proxyTokenId && pkgName == proxyBundleName) { return true; } } @@ -811,12 +815,12 @@ int32_t DeviceProfileConnector::CheckAuthForm(DmAuthForm form, AccessControlProf } if (profiles.GetBindLevel() == APP || profiles.GetBindLevel() == SERVICE) { if ((discoveryInfo.pkgname == profiles.GetAccesser().GetAccesserBundleName() || - CheckAuthFormProxyTokenId(profiles.GetAccesser().GetAccesserExtraData())) && + CheckAuthFormProxyTokenId(discoveryInfo.pkgname, profiles.GetAccesser().GetAccesserExtraData())) && discoveryInfo.localDeviceId == profiles.GetAccesser().GetAccesserDeviceId()) { return form; } if ((discoveryInfo.pkgname == profiles.GetAccessee().GetAccesseeBundleName() || - CheckAuthFormProxyTokenId(profiles.GetAccessee().GetAccesseeExtraData())) && + CheckAuthFormProxyTokenId(discoveryInfo.pkgname, profiles.GetAccessee().GetAccesseeExtraData())) && discoveryInfo.localDeviceId == profiles.GetAccessee().GetAccesseeDeviceId()) { return form; }