diff --git a/services/service/src/relationshipsyncmgr/dm_transport_msg.cpp b/services/service/src/relationshipsyncmgr/dm_transport_msg.cpp index 0fa4e699647cf263e060e3fc4cdfe86f97d60497..022c55ff17eebb011787a466f06a1bf04823ffb6 100644 --- a/services/service/src/relationshipsyncmgr/dm_transport_msg.cpp +++ b/services/service/src/relationshipsyncmgr/dm_transport_msg.cpp @@ -34,8 +34,14 @@ void ToJson(cJSON *jsonObject, const UserIdsMsg &userIdsMsg) if (foregroundUserIdArr == nullptr) { return; } + cJSON *numberObj = nullptr; for (auto const &userId : userIdsMsg.foregroundUserIds) { - cJSON_AddItemToArray(foregroundUserIdArr, cJSON_CreateNumber(userId)); + numberObj = cJSON_CreateNumber(userId); + if (numberObj == nullptr || !cJSON_AddItemToArray(foregroundUserIdArr, numberObj)) { + cJSON_Delete(numberObj); + cJSON_Delete(foregroundUserIdArr); + return; + } } cJSON_AddItemToObject(jsonObject, FOREGROUND_USERIDS_MSG_USERIDS_KEY, foregroundUserIdArr); @@ -43,8 +49,14 @@ void ToJson(cJSON *jsonObject, const UserIdsMsg &userIdsMsg) if (backgroundUserIdArr == nullptr) { return; } + cJSON *backgroundNumberObj = nullptr; for (auto const &userId : userIdsMsg.backgroundUserIds) { - cJSON_AddItemToArray(backgroundUserIdArr, cJSON_CreateNumber(userId)); + backgroundNumberObj = cJSON_CreateNumber(userId); + if (backgroundNumberObj == nullptr || !cJSON_AddItemToArray(backgroundUserIdArr, backgroundNumberObj)) { + cJSON_Delete(backgroundNumberObj); + cJSON_Delete(backgroundUserIdArr); + return; + } } cJSON_AddItemToObject(jsonObject, BACKGROUND_USERIDS_MSG_USERIDS_KEY, backgroundUserIdArr); } @@ -149,8 +161,14 @@ void ToJson(cJSON *jsonObject, const NotifyUserIds ¬ifyUserIds) if (userIdArr == nullptr) { return; } + cJSON *userIdNumberObj = nullptr; for (auto const &userId : notifyUserIds.userIds) { - cJSON_AddItemToArray(userIdArr, cJSON_CreateNumber(userId)); + userIdNumberObj = cJSON_CreateNumber(userId); + if (userIdNumberObj == nullptr || !cJSON_AddItemToArray(userIdArr, userIdNumberObj)) { + cJSON_Delete(userIdNumberObj); + cJSON_Delete(userIdArr); + return; + } } cJSON_AddItemToObject(jsonObject, DSOFTBUS_NOTIFY_USERIDS_USERIDKEY, userIdArr); } diff --git a/services/service/src/relationshipsyncmgr/relationship_sync_mgr.cpp b/services/service/src/relationshipsyncmgr/relationship_sync_mgr.cpp index 9d2c88dcb4affee8b06cdef920e742b4a901f90a..2a7ddb86f17833a031be083fd3c613449a5f521c 100644 --- a/services/service/src/relationshipsyncmgr/relationship_sync_mgr.cpp +++ b/services/service/src/relationshipsyncmgr/relationship_sync_mgr.cpp @@ -469,8 +469,14 @@ cJSON *RelationShipChangeMsg::ToPayLoadJson() const } return nullptr; } + cJSON *numberObj = nullptr; for (uint32_t index = 0; index < len; index++) { - cJSON_AddItemToArray(arrayObj, cJSON_CreateNumber(payload[index])); + numberObj = cJSON_CreateNumber(payload[index]); + if (numberObj == nullptr || !cJSON_AddItemToArray(arrayObj, numberObj)) { + cJSON_Delete(numberObj); + cJSON_Delete(arrayObj); + return nullptr; + } } if (payload != nullptr) { delete[] payload; @@ -500,8 +506,15 @@ std::string RelationShipChangeMsg::ToJson() const cJSON_Delete(msg); return ""; } + cJSON *udidStringObj = nullptr; for (uint32_t index = 0; index < peerUdids.size(); index++) { - cJSON_AddItemToArray(udidArrayObj, cJSON_CreateString(peerUdids[index].c_str())); + udidStringObj = cJSON_CreateString(peerUdids[index].c_str()); + if (udidStringObj == nullptr || !cJSON_AddItemToArray(udidArrayObj, udidStringObj)) { + cJSON_Delete(udidStringObj); + cJSON_Delete(udidArrayObj); + cJSON_Delete(msg); + return ""; + } } cJSON_AddItemToObject(msg, MSG_PEER_UDID, udidArrayObj); cJSON_AddStringToObject(msg, MSG_ACCOUNTID, accountName.c_str());