diff --git a/src/engine/client/client.cpp b/src/engine/client/client.cpp index 164933437..086b18daa 100644 --- a/src/engine/client/client.cpp +++ b/src/engine/client/client.cpp @@ -1822,7 +1822,7 @@ void CClient::ProcessServerPacket(CNetChunk *pPacket) pData = (const char *)Unpacker.GetRaw(PartSize); - if(Unpacker.Error() || NumParts < 1 || Part < 0 || PartSize < 0) + if(Unpacker.Error() || NumParts < 1 || NumParts > CSnapshot::MAX_PARTS || Part < 0 | Part >= NumParts || PartSize < 0 || PartSize > MAX_SNAPSHOT_PACKSIZE) return; if(GameTick >= m_CurrentRecvTick[g_Config.m_ClDummy]) diff --git a/src/engine/shared/snapshot.h b/src/engine/shared/snapshot.h index 781408fac..fa6fccc7d 100644 --- a/src/engine/shared/snapshot.h +++ b/src/engine/shared/snapshot.h @@ -33,7 +33,8 @@ public: { OFFSET_UUID_TYPE=0x4000, MAX_TYPE=0x7fff, - MAX_SIZE=64*1024 + MAX_PARTS=64, + MAX_SIZE=MAX_PARTS*1024 }; void Clear() { m_DataSize = 0; m_NumItems = 0; }