From 1149f7821b2a11da47d076d462975ced44a320a6 Mon Sep 17 00:00:00 2001 From: jinlijun Date: Mon, 19 Jul 2021 14:41:33 +0800 Subject: [PATCH] when deviceId already in trusted list, return target errno Signed-off-by: jinlijun --- common/utils/include/device_manager_errno.h | 1 + .../include/softbus/softbus_adapter.h | 2 +- .../src/device_manager_service.cpp | 21 ++++++++++++++----- 3 files changed, 18 insertions(+), 6 deletions(-) diff --git a/common/utils/include/device_manager_errno.h b/common/utils/include/device_manager_errno.h index 11fcbfa73..e2b8cf2c5 100644 --- a/common/utils/include/device_manager_errno.h +++ b/common/utils/include/device_manager_errno.h @@ -29,6 +29,7 @@ constexpr ErrCode DEVICE_MANAGER_ERR_OFFSET = ErrCodeOffset(SUBSYS_DISTRIBUTEDHA enum { ERR_DEVICEMANAGER_OPERATION_FAILED = DEVICE_MANAGER_ERR_OFFSET + 1, ERR_DEVICEMANAGER_SERVICE_NOT_READY = DEVICE_MANAGER_ERR_OFFSET + 2, + ERR_DEVICEMANAGER_DEVICE_ALREADY_TRUSTED = DEVICE_MANAGER_ERR_OFFSET + 3, }; } // namespace DistributedHardware } // namespace OHOS diff --git a/services/devicemanagerservice/include/softbus/softbus_adapter.h b/services/devicemanagerservice/include/softbus/softbus_adapter.h index 932dcfe14..6d0ba83dc 100644 --- a/services/devicemanagerservice/include/softbus/softbus_adapter.h +++ b/services/devicemanagerservice/include/softbus/softbus_adapter.h @@ -53,10 +53,10 @@ public: int32_t SoftbusJoinLnn(std::string devId); int32_t SoftbusLeaveLnn(std::string networkId); int32_t GetConnectionIpAddr(std::string deviceId, std::string &ipAddr); + static bool IsDeviceOnLine(std::string &deviceId); private: static void OnSoftBusDeviceStateChange(DmDeviceState state, NodeBasicInfo *info); - static bool IsDeviceOnLine(std::string &deviceId); std::string GetPackageNameBySubscribeId(uint16_t subscribeId); bool GetsubscribeIdAdapter(std::string packageName, int16_t originId, int32_t &adapterId); bool GetPackageNameBySubscribeId(int32_t adapterId, std::string &packageName); diff --git a/services/devicemanagerservice/src/device_manager_service.cpp b/services/devicemanagerservice/src/device_manager_service.cpp index 80cbd3616..5da977ab7 100644 --- a/services/devicemanagerservice/src/device_manager_service.cpp +++ b/services/devicemanagerservice/src/device_manager_service.cpp @@ -23,6 +23,7 @@ #include "system_ability_definition.h" #include "anonymous_string.h" +#include "device_manager_errno.h" #include "device_manager_log.h" #include "softbus_adapter.h" @@ -190,17 +191,24 @@ int32_t DeviceManagerService::AuthenticateDevice(std::string &packageName, const std::string &extra) { (void)extra; + + std::string deviceId = deviceInfo.deviceId; + if (SoftbusAdapter::IsDeviceOnLine(deviceId)) { + HILOGI("AuthenticateDevice, deviceId is already in trusted list, return."); + return ERR_DEVICEMANAGER_DEVICE_ALREADY_TRUSTED; + } + DeviceReqInfo devReqInfo; - devReqInfo.deviceId = deviceInfo.deviceId; + devReqInfo.deviceId = deviceId; HILOGI("AuthenticateDevice In, packageName: %{public}s, deviceId %{public}s", packageName.c_str(), - GetAnonyString(deviceInfo.deviceId).c_str()); - int32_t ret = SoftbusAdapter::GetInstance().GetConnectionIpAddr(deviceInfo.deviceId, devReqInfo.ipAddr); + GetAnonyString(deviceId).c_str()); + int32_t ret = SoftbusAdapter::GetInstance().GetConnectionIpAddr(deviceId, devReqInfo.ipAddr); if (ret != ERR_OK) { HILOGE("AuthenticateDevice Error: can not find ip by deviceId."); return ret; } - authCallbackParas_[deviceInfo.deviceId] = packageName; + authCallbackParas_[deviceId] = packageName; return HichainAdapter::GetInstance().Bind(devReqInfo, hichainBindCallback_, false); } @@ -255,7 +263,10 @@ void HiChainBindCallback::onBindSuccess(std::string deviceId, const char *return std::string packageName = iter->second; sptr dmListener = DeviceManagerService::GetInstance().GetDmListener(packageName); - dmListener->OnAuthResult(packageName, deviceId, DmBindStatus::STATE_BIND_SUCCESS, ERR_NONE); + if (dmListener != nullptr) { + dmListener->OnAuthResult(packageName, deviceId, DmBindStatus::STATE_BIND_SUCCESS, ERR_NONE); + } + int32_t ret = SoftbusAdapter::GetInstance().SoftbusJoinLnn(deviceId); HILOGI("onBindSuccess, DM bind succeed, joinlnn ret=%{public}d.", ret); } -- Gitee