diff options
author | Mattes D <github@xoft.cz> | 2014-12-21 20:01:42 +0100 |
---|---|---|
committer | Mattes D <github@xoft.cz> | 2014-12-21 20:01:42 +0100 |
commit | d4c3821eca6249399a2d690c3c8735526d1d5a4c (patch) | |
tree | 0aa700cc05c7cafb8d420bf83392ad732de653ab | |
parent | Fixed a possible division by zero. (diff) | |
download | cuberite-d4c3821eca6249399a2d690c3c8735526d1d5a4c.tar cuberite-d4c3821eca6249399a2d690c3c8735526d1d5a4c.tar.gz cuberite-d4c3821eca6249399a2d690c3c8735526d1d5a4c.tar.bz2 cuberite-d4c3821eca6249399a2d690c3c8735526d1d5a4c.tar.lz cuberite-d4c3821eca6249399a2d690c3c8735526d1d5a4c.tar.xz cuberite-d4c3821eca6249399a2d690c3c8735526d1d5a4c.tar.zst cuberite-d4c3821eca6249399a2d690c3c8735526d1d5a4c.zip |
-rw-r--r-- | src/Protocol/Protocol17x.cpp | 7 | ||||
-rw-r--r-- | src/Protocol/Protocol18x.cpp | 8 |
2 files changed, 11 insertions, 4 deletions
diff --git a/src/Protocol/Protocol17x.cpp b/src/Protocol/Protocol17x.cpp index 1e5fe5586..1e33ec433 100644 --- a/src/Protocol/Protocol17x.cpp +++ b/src/Protocol/Protocol17x.cpp @@ -1524,7 +1524,7 @@ void cProtocol172::AddReceivedData(const char * a_Data, size_t a_Size) AString PacketData; bb.ReadAll(PacketData); bb.ResetRead(); - bb.ReadVarInt(PacketType); + bb.ReadVarInt(PacketType); // We have already read the packet type once, it will be there again. ASSERT(PacketData.size() > 0); // We have written an extra NUL, so there had to be at least one byte read PacketData.resize(PacketData.size() - 1); AString PacketDataHex; @@ -1753,7 +1753,10 @@ void cProtocol172::HandlePacketLoginEncryptionResponse(cByteBuffer & a_ByteBuffe { return; } - a_ByteBuffer.ReadBEShort(EncNonceLength); + if (!a_ByteBuffer.ReadBEShort(EncNonceLength)) + { + return; + } AString EncNonce; if (!a_ByteBuffer.ReadString(EncNonce, EncNonceLength)) { diff --git a/src/Protocol/Protocol18x.cpp b/src/Protocol/Protocol18x.cpp index ce580d73e..1a13f4f7c 100644 --- a/src/Protocol/Protocol18x.cpp +++ b/src/Protocol/Protocol18x.cpp @@ -1723,7 +1723,11 @@ void cProtocol180::AddReceivedData(const char * a_Data, size_t a_Size) { // Decompress the data: AString CompressedData; - m_ReceivedData.ReadString(CompressedData, CompressedSize); + if (!m_ReceivedData.ReadString(CompressedData, CompressedSize)) + { + m_Client->Kick("Compression failure"); + return; + } InflateString(CompressedData.data(), CompressedSize, UncompressedData); PacketLen = UncompressedData.size(); } @@ -1765,7 +1769,7 @@ void cProtocol180::AddReceivedData(const char * a_Data, size_t a_Size) AString PacketData; bb.ReadAll(PacketData); bb.ResetRead(); - bb.ReadVarInt(PacketType); + bb.ReadVarInt(PacketType); // We have already read the packet type once, it will be there again ASSERT(PacketData.size() > 0); // We have written an extra NUL, so there had to be at least one byte read PacketData.resize(PacketData.size() - 1); AString PacketDataHex; |