diff options
Diffstat (limited to 'src/plugins/qmltooling/packetprotocol/qpacketprotocol.cpp')
-rw-r--r-- | src/plugins/qmltooling/packetprotocol/qpacketprotocol.cpp | 10 |
1 files changed, 3 insertions, 7 deletions
diff --git a/src/plugins/qmltooling/packetprotocol/qpacketprotocol.cpp b/src/plugins/qmltooling/packetprotocol/qpacketprotocol.cpp index 5460d617dd..1c73b9d7fb 100644 --- a/src/plugins/qmltooling/packetprotocol/qpacketprotocol.cpp +++ b/src/plugins/qmltooling/packetprotocol/qpacketprotocol.cpp @@ -45,8 +45,6 @@ QT_BEGIN_NAMESPACE -static const int MAX_PACKET_SIZE = 0x7FFFFFFF; - /*! \class QPacketProtocol \internal @@ -238,12 +236,10 @@ void QPacketProtocol::readyToRead() return; // Read size header - int read = d->dev->read((char *)&d->inProgressSize, sizeof(qint32)); - Q_ASSERT(read == sizeof(qint32)); - Q_UNUSED(read); + const qint64 read = d->dev->read((char *)&d->inProgressSize, sizeof(qint32)); // Check sizing constraints - if (d->inProgressSize > MAX_PACKET_SIZE) { + if (read != sizeof(qint32) || d->inProgressSize < read) { disconnect(d->dev, &QIODevice::readyRead, this, &QPacketProtocol::readyToRead); disconnect(d->dev, &QIODevice::aboutToClose, this, &QPacketProtocol::aboutToClose); disconnect(d->dev, &QIODevice::bytesWritten, this, &QPacketProtocol::bytesWritten); @@ -252,7 +248,7 @@ void QPacketProtocol::readyToRead() return; } - d->inProgressSize -= sizeof(qint32); + d->inProgressSize -= read; } else { d->inProgress.append(d->dev->read(d->inProgressSize - d->inProgress.size())); |