diff --git a/src/libs/ssh/sshincomingpacket.cpp b/src/libs/ssh/sshincomingpacket.cpp index 22db3074041..00db58ea380 100644 --- a/src/libs/ssh/sshincomingpacket.cpp +++ b/src/libs/ssh/sshincomingpacket.cpp @@ -90,6 +90,9 @@ void SshIncomingPacket::consumeData(QByteArray &newData) return; } + if (4 + length() + macLength() < currentDataSize()) + throw SSH_SERVER_EXCEPTION(SSH_DISCONNECT_PROTOCOL_ERROR, "Server sent invalid packet."); + const int bytesToTake = qMin(length() + 4 + macLength() - currentDataSize(), newData.size()); diff --git a/src/libs/ssh/sshpacket.cpp b/src/libs/ssh/sshpacket.cpp index 3e6e4085870..52a532dc1f3 100644 --- a/src/libs/ssh/sshpacket.cpp +++ b/src/libs/ssh/sshpacket.cpp @@ -70,7 +70,6 @@ bool AbstractSshPacket::isComplete() const { if (currentDataSize() < minPacketSize()) return false; - Q_ASSERT(4 + length() + macLength() >= currentDataSize()); return 4 + length() + macLength() == currentDataSize(); }