From 0db793fe4117c243361d4b8eff4fb5ab87f66020 Mon Sep 17 00:00:00 2001 From: Alex Trotsenko Date: Wed, 24 Feb 2016 20:05:48 +0200 Subject: QAbstractSocket: fix a possible crash in waitForReadyRead() waitForConnected() could return 'true' even when the socket was disconnected. Change-Id: I99d9c9730f4e9b6c8a54696eb92c24c3ef36d261 Reviewed-by: Markus Goetz (Woboq GmbH) --- src/network/socket/qabstractsocket.cpp | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) (limited to 'src/network') diff --git a/src/network/socket/qabstractsocket.cpp b/src/network/socket/qabstractsocket.cpp index 385146bb95..e60c821da6 100644 --- a/src/network/socket/qabstractsocket.cpp +++ b/src/network/socket/qabstractsocket.cpp @@ -2149,8 +2149,10 @@ bool QAbstractSocket::waitForReadyRead(int msecs) return false; } - Q_ASSERT(d->socketEngine); do { + if (state() != ConnectedState) + return false; + bool readyToRead = false; bool readyToWrite = false; if (!d->socketEngine->waitForReadOrWrite(&readyToRead, &readyToWrite, true, !d->writeBuffer.isEmpty(), @@ -2172,9 +2174,6 @@ bool QAbstractSocket::waitForReadyRead(int msecs) if (readyToWrite) d->canWriteNotification(); - - if (state() != ConnectedState) - return false; } while (msecs == -1 || qt_subtract_from_timeout(msecs, stopWatch.elapsed()) > 0); return false; } -- cgit v1.2.3