From 4ecc5cef544b1759c71cf6762b8840772e11338d Mon Sep 17 00:00:00 2001 From: Adam <893184+NotAdam@users.noreply.github.com> Date: Sat, 26 Aug 2017 15:07:31 +0900 Subject: [PATCH] Tempoary bound check for GamePacket --- src/servers/Server_Common/Network/GamePacket.h | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/servers/Server_Common/Network/GamePacket.h b/src/servers/Server_Common/Network/GamePacket.h index 340be1a3..d98f0316 100644 --- a/src/servers/Server_Common/Network/GamePacket.h +++ b/src/servers/Server_Common/Network/GamePacket.h @@ -38,27 +38,32 @@ public: template void setValAt( uint16_t pos, T value ) { + assert( m_segHdr.size > pos ); memcpy( reinterpret_cast< uint8_t* >( &m_dataBuf[0] + pos ), &value, sizeof( T ) ); } template T getValAt( uint16_t pos ) const { + assert(m_segHdr.size > pos); return *reinterpret_cast< const T* >( &m_dataBuf[0] + pos ); } void setBytesAt( uint16_t offset, uint8_t * bytes, uint16_t length ) { + assert(m_segHdr.size > offset); memcpy( reinterpret_cast< uint8_t* >( &m_dataBuf[0] + offset ), bytes, length ); } const char * getStringAt( uint16_t pos ) const { + assert(m_segHdr.size > pos); return reinterpret_cast< const char* >( &m_dataBuf[0] + pos ); } void setStringAt( uint16_t pos, const std::string& str ) { + assert(m_segHdr.size > pos); memcpy( reinterpret_cast< uint8_t* >( &m_dataBuf[0] + pos ), str.c_str(), str.length() ); }