diff options
| author | leak <leak@bitmx.net> | 2014-07-06 15:17:59 +0200 |
|---|---|---|
| committer | leak <leak@bitmx.net> | 2014-07-06 15:17:59 +0200 |
| commit | 5dc47243fc3521ae1bc37d7d812a2960bd760c45 (patch) | |
| tree | 7176a8f70add0432eb1273af6d4ae2fa10ca59ae | |
| parent | 916800eb35bb0eec0afa48c3150cadbeebef66ba (diff) | |
Fixed packet header decryption and zero size packet handling
| -rw-r--r-- | src/server/game/Server/WorldTcpSession.cpp | 12 |
1 files changed, 9 insertions, 3 deletions
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 +} |
