NetworkPacket::putRawPacket: resize m_data to datasize + memcpy
authorLoic Blot <loic.blot@unix-experience.fr>
Mon, 9 Oct 2017 22:47:37 +0000 (00:47 +0200)
committerSmallJoker <mk939@ymail.com>
Sun, 3 Jun 2018 15:31:59 +0000 (17:31 +0200)
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

src/network/networkpacket.cpp

index f7a6499ddbcbe032f4b33ddc8a9d50b75f61077e..8e06ae104a6c6957c3d9ea7ec82ce46ba4d192e0 100644 (file)
@@ -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<u8>(&data[2], &data[2 + m_datasize]);
+       memcpy(&m_data[0], &data[2], m_datasize);
 }
 
 const char* NetworkPacket::getString(u32 from_offset)