summaryrefslogtreecommitdiffstats
path: root/src/network
diff options
context:
space:
mode:
authorAlex Trotsenko <alex1973tr@gmail.com>2016-02-24 20:05:48 +0200
committerAlex Trotsenko <alex1973tr@gmail.com>2016-03-02 11:04:03 +0000
commit0db793fe4117c243361d4b8eff4fb5ab87f66020 (patch)
tree37e02aa434246294146d2d62c5a60751750a4dd7 /src/network
parent359546b069051213a7b337fefbe21b664618f959 (diff)
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) <markus@woboq.com>
Diffstat (limited to 'src/network')
-rw-r--r--src/network/socket/qabstractsocket.cpp7
1 files changed, 3 insertions, 4 deletions
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;
}