From: Loic Blot Date: Mon, 9 Oct 2017 22:47:37 +0000 (+0200) Subject: NetworkPacket::putRawPacket: resize m_data to datasize + memcpy X-Git-Tag: 0.4.17~71 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=9dc1f2d638ddde253fbfac26c856b5da4ea1495f;p=oweals%2Fminetest.git NetworkPacket::putRawPacket: resize m_data to datasize + memcpy In some cases NetworkPacket was created using default constructor and m_data is not properly sized. This fixed out of bounds memory copy Also use memcpy instead of std::vector affectation to enhance packet creation --- diff --git a/src/network/networkpacket.cpp b/src/network/networkpacket.cpp index f7a6499dd..8e06ae104 100644 --- a/src/network/networkpacket.cpp +++ b/src/network/networkpacket.cpp @@ -58,9 +58,11 @@ void NetworkPacket::putRawPacket(u8 *data, u32 datasize, u16 peer_id) m_datasize = datasize - 2; m_peer_id = peer_id; + m_data.resize(m_datasize); + // split command and datas m_command = readU16(&data[0]); - m_data = std::vector(&data[2], &data[2 + m_datasize]); + memcpy(&m_data[0], &data[2], m_datasize); } const char* NetworkPacket::getString(u32 from_offset)