diff options
author | kwolekr <kwolekr@minetest.net> | 2015-08-05 23:53:26 -0400 |
---|---|---|
committer | kwolekr <kwolekr@minetest.net> | 2015-08-06 00:10:57 -0400 |
commit | bd0b469d3d212ae1407233bdb743bfcab31b4dc7 (patch) | |
tree | 277955411f45ce615041f746a3cb3102e99580f0 /src/network/networkpacket.h | |
parent | 49cf66d78566de128ec8879044e9d9e2fac0ba1c (diff) | |
download | minetest-bd0b469d3d212ae1407233bdb743bfcab31b4dc7.tar.gz minetest-bd0b469d3d212ae1407233bdb743bfcab31b4dc7.tar.bz2 minetest-bd0b469d3d212ae1407233bdb743bfcab31b4dc7.zip |
Fix critical vulnerabilities and bugs with NetworkPacket
Diffstat (limited to 'src/network/networkpacket.h')
-rw-r--r-- | src/network/networkpacket.h | 13 |
1 files changed, 4 insertions, 9 deletions
diff --git a/src/network/networkpacket.h b/src/network/networkpacket.h index 0408b9cac..72f8cabe2 100644 --- a/src/network/networkpacket.h +++ b/src/network/networkpacket.h @@ -111,21 +111,16 @@ public: // Temp, we remove SharedBuffer when migration finished Buffer<u8> oldForgePacket(); private: - void checkReadOffset(u32 from_offset); + void checkReadOffset(u32 from_offset, u32 field_size); - template<typename T> void checkDataSize() + inline void checkDataSize(u32 field_size) { - if (m_read_offset + sizeof(T) > m_datasize) { - m_datasize = m_read_offset + sizeof(T); + if (m_read_offset + field_size > m_datasize) { + m_datasize = m_read_offset + field_size; m_data.resize(m_datasize); } } - template<typename T> void incrOffset() - { - m_read_offset += sizeof(T); - } - std::vector<u8> m_data; u32 m_datasize; u32 m_read_offset; |