diff options
| author | oy <Tom_Adams@web.de> | 2010-08-12 15:22:07 +0200 |
|---|---|---|
| committer | oy <Tom_Adams@web.de> | 2010-08-12 15:22:07 +0200 |
| commit | 7503c642379cec7a2e14fe6a516d69a1f4d6d94a (patch) | |
| tree | 7c10ada1c341c67669cccdc7ae6f261ae3d103a6 /src/engine/client | |
| parent | 1cde96ef79a8418a9c34f355ec49d08f1e654213 (diff) | |
| download | zcatch-7503c642379cec7a2e14fe6a516d69a1f4d6d94a.tar.gz zcatch-7503c642379cec7a2e14fe6a516d69a1f4d6d94a.zip | |
made unpacking of net strings more strict - prevents possible malformed output
Diffstat (limited to 'src/engine/client')
| -rw-r--r-- | src/engine/client/client.cpp | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/src/engine/client/client.cpp b/src/engine/client/client.cpp index 78bed263..d2872408 100644 --- a/src/engine/client/client.cpp +++ b/src/engine/client/client.cpp @@ -870,10 +870,10 @@ void CClient::ProcessPacket(CNetChunk *pPacket) Up.Reset((unsigned char*)pPacket->m_pData+sizeof(SERVERBROWSE_INFO), pPacket->m_DataSize-sizeof(SERVERBROWSE_INFO)); if(PacketType >= 2) Token = str_toint(Up.GetString()); - str_copy(Info.m_aVersion, Up.GetString(), sizeof(Info.m_aVersion)); - str_copy(Info.m_aName, Up.GetString(), sizeof(Info.m_aName)); - str_copy(Info.m_aMap, Up.GetString(), sizeof(Info.m_aMap)); - str_copy(Info.m_aGameType, Up.GetString(), sizeof(Info.m_aGameType)); + str_copy(Info.m_aVersion, Up.GetString(CUnpacker::SANITIZE_CC|CUnpacker::SKIP_START_WHITESPACES), sizeof(Info.m_aVersion)); + str_copy(Info.m_aName, Up.GetString(CUnpacker::SANITIZE_CC|CUnpacker::SKIP_START_WHITESPACES), sizeof(Info.m_aName)); + str_copy(Info.m_aMap, Up.GetString(CUnpacker::SANITIZE_CC|CUnpacker::SKIP_START_WHITESPACES), sizeof(Info.m_aMap)); + str_copy(Info.m_aGameType, Up.GetString(CUnpacker::SANITIZE_CC|CUnpacker::SKIP_START_WHITESPACES), sizeof(Info.m_aGameType)); Info.m_Flags = str_toint(Up.GetString()); Info.m_Progression = str_toint(Up.GetString()); Info.m_NumPlayers = str_toint(Up.GetString()); @@ -889,7 +889,7 @@ void CClient::ProcessPacket(CNetChunk *pPacket) for(int i = 0; i < Info.m_NumPlayers; i++) { - str_copy(Info.m_aPlayers[i].m_aName, Up.GetString(), sizeof(Info.m_aPlayers[i].m_aName)); + str_copy(Info.m_aPlayers[i].m_aName, Up.GetString(CUnpacker::SANITIZE_CC|CUnpacker::SKIP_START_WHITESPACES), sizeof(Info.m_aPlayers[i].m_aName)); Info.m_aPlayers[i].m_Score = str_toint(Up.GetString()); } @@ -933,7 +933,7 @@ void CClient::ProcessPacket(CNetChunk *pPacket) // system message if(Msg == NETMSG_MAP_CHANGE) { - const char *pMap = Unpacker.GetString(); + const char *pMap = Unpacker.GetString(CUnpacker::SANITIZE_CC|CUnpacker::SKIP_START_WHITESPACES); int MapCrc = Unpacker.GetInt(); const char *pError = 0; |