From c1a0a99b2c03067a260fe16537d5d50d8131a193 Mon Sep 17 00:00:00 2001 From: Marcus Eggenberger Date: Mon, 14 Jul 2008 14:56:40 +0200 Subject: [PATCH] limiting package size for the SignalProxy to 4MB --- src/common/signalproxy.cpp | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/common/signalproxy.cpp b/src/common/signalproxy.cpp index 22e71f13..0f383782 100644 --- a/src/common/signalproxy.cpp +++ b/src/common/signalproxy.cpp @@ -23,6 +23,7 @@ #include #include #include +#include #include #include #include @@ -901,7 +902,7 @@ void SignalProxy::dataAvailable() { void SignalProxy::writeDataToDevice(QIODevice *dev, const QVariant &item) { QAbstractSocket* sock = qobject_cast(dev); if(!dev->isOpen() || (sock && sock->state()!=QAbstractSocket::ConnectedState)) { - qWarning("SignalProxy: Can't call on a closed device"); + qWarning("SignalProxy: Can't call write on a closed device"); return; } QByteArray block; @@ -922,6 +923,14 @@ bool SignalProxy::readDataFromDevice(QIODevice *dev, quint32 &blockSize, QVarian in >> blockSize; } + if(blockSize > 1 << 22) { + qWarning() << qPrintable(tr("Client tried to send package larger than max package size!")); + QAbstractSocket* sock = qobject_cast(dev); + qWarning() << qPrintable(tr("Disconnecting")) << (sock ? qPrintable(sock->peerAddress().toString()) : qPrintable(tr("local client"))); + dev->close(); + return false; + } + if(dev->bytesAvailable() < blockSize) return false; in >> item; -- 2.20.1