From 5dc47243fc3521ae1bc37d7d812a2960bd760c45 Mon Sep 17 00:00:00 2001 From: leak Date: Sun, 6 Jul 2014 15:17:59 +0200 Subject: Fixed packet header decryption and zero size packet handling --- src/server/game/Server/WorldTcpSession.cpp | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/server/game/Server/WorldTcpSession.cpp b/src/server/game/Server/WorldTcpSession.cpp index aa72753dd9e..325d679c243 100644 --- a/src/server/game/Server/WorldTcpSession.cpp +++ b/src/server/game/Server/WorldTcpSession.cpp @@ -66,6 +66,9 @@ void WorldTcpSession::AsyncReadHeader() { ClientPktHeader* header = (ClientPktHeader*)&_readBuffer; + if (_worldSession) + _authCrypt.DecryptRecv((uint8*)header, sizeof(ClientPktHeader)); + EndianConvertReverse(header->size); EndianConvert(header->cmd); @@ -95,9 +98,12 @@ void WorldTcpSession::AsyncReadData(size_t dataSize) WorldPacket packet(opcode, header->size); - packet.resize(header->size); + if (header->size > 0) + { + packet.resize(header->size); - std::memcpy(packet.contents(), &_readBuffer[sizeof(ClientPktHeader)], header->size); + std::memcpy(packet.contents(), &_readBuffer[sizeof(ClientPktHeader)], header->size); + } switch (opcode) { @@ -398,4 +404,4 @@ void WorldTcpSession::SendAuthResponseError(uint8 code) packet << uint8(code); AsyncWrite(packet); -} \ No newline at end of file +} -- cgit v1.2.3