diff --git a/services/implementation/src/device_manager_service_impl.cpp b/services/implementation/src/device_manager_service_impl.cpp index bc58bf3928b060995167fdca5e13e8f39546ec45..b2df69e35f775f3230b8f367facff7073aad26ea 100644 --- a/services/implementation/src/device_manager_service_impl.cpp +++ b/services/implementation/src/device_manager_service_impl.cpp @@ -69,6 +69,7 @@ constexpr const char* CHANGE_PINTYPE = "1"; constexpr size_t MAX_NEW_PROC_SESSION_COUNT_TEMP = 1; const int32_t USLEEP_TIME_US_500000 = 500000; // 500ms const int32_t OPEN_AUTH_SESSION_TIMEOUT = 15000; // 15000ms +const int32_t SHARE_CRED_TYPE = 3; const std::map BUNDLENAME_MAPPING = { { "wear_link_service", "watch_system_service" } @@ -2515,6 +2516,10 @@ void DeviceManagerServiceImpl::CheckDeleteCredential(const std::string &remoteUd void DeviceManagerServiceImpl::HandleCredentialDeleted(const char *credId, const char *credInfo, const std::string &localUdid, std::string &remoteUdid, bool &isShareType) { + if (credId == nullptr || credInfo == nullptr || localUdid.empty()) { + LOGE("Invalid parameter, credId or credInfo is null."); + return; + } std::vector profiles = DeviceProfileConnector::GetInstance().GetAccessControlProfile(); JsonObject jsonObject; @@ -2525,19 +2530,26 @@ void DeviceManagerServiceImpl::HandleCredentialDeleted(const char *credId, const } std::string deviceIdTag = "deviceId"; std::string userIdTag = "osAccountId"; + std::string credTypeTag = "credType"; int32_t localUserId = MultipleUserConnector::GetCurrentAccountUserID(); int32_t userId = 0; + int32_t credType = -1; if (IsString(jsonObject, deviceIdTag)) { remoteUdid = jsonObject[deviceIdTag].Get(); } if (IsInt32(jsonObject, userIdTag)) { userId = jsonObject[userIdTag].Get(); } + if (IsInt32(jsonObject, credTypeTag)) { + credType = jsonObject[credTypeTag].Get(); + } + + if (credType != SHARE_CRED_TYPE) { + LOGE("credType is not SHARE_CRED_TYPE."); + return; + } for (const auto &item : profiles) { - if (item.GetBindType() != DM_SHARE) { - continue; - } if ((item.GetAccesser().GetAccesserCredentialIdStr() == credId && item.GetAccesser().GetAccesserDeviceId() == localUdid && item.GetAccesser().GetAccesserUserId() == localUserId && diff --git a/services/service/src/device_manager_service.cpp b/services/service/src/device_manager_service.cpp index 9daf9e13f0d59574e343826ac1bfae5a14048d5a..9e28575416c2431a326d81b4e2cece085e5355d6 100644 --- a/services/service/src/device_manager_service.cpp +++ b/services/service/src/device_manager_service.cpp @@ -1967,6 +1967,10 @@ void DeviceManagerService::SendShareTypeUnBindBroadCast(const char *credId, cons const std::vector &peerUdids) { LOGI("Start."); + if (credId == nullptr) { + LOGE("Invalid parameter, credId is nullptr."); + return; + } RelationShipChangeMsg msg; msg.type = RelationShipChangeType::SHARE_UNBIND; msg.userId = static_cast(localUserId); @@ -3068,7 +3072,7 @@ bool DeviceManagerService::IsMsgEmptyAndDMServiceImplReady(const std::string &ms void DeviceManagerService::HandleShareUnbindBroadCast(const int32_t userId, const std::string &credId) { LOGI("start."); - if (credId == "") { + if (credId.empty()) { LOGE("HandleShareUnbindBroadCast credId is null."); return; }