diff options
author | Ievgenii Meshcheriakov <ievgenii.meshcheriakov@qt.io> | 2024-01-18 15:48:09 +0100 |
---|---|---|
committer | Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> | 2024-01-19 14:05:30 +0000 |
commit | 7fd8d5ba666cde70faa53f4f18b4d64ec41bbb3a (patch) | |
tree | 2909fb0454999448df5b78e560870b500adf6245 | |
parent | 7eb1bcc50d5c5843a3fe73cc4789273351b6a24a (diff) |
IOChunkedTransfer: Check that `sink` and `source` are not null before using them
Those QPointers are pointing to devices that can be destroyed early,
for example if a connection was closed before the transfer has completed.
This fixes a potential crash.
Fixes: QTBUG-121219
Pick-to: 6.6 6.5
Change-Id: I255176d1779dd49cb0447ee72d78a3f6e25d5ccd
Reviewed-by: Andre Vehreschild <vehre@badgersystems.de>
Reviewed-by: MÃ¥rten Nordheim <marten.nordheim@qt.io>
(cherry picked from commit 91bfef367a2e5bdafca072ae8bf0f0824a50a194)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
-rw-r--r-- | src/httpserver/qhttpserverresponder.cpp | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/httpserver/qhttpserverresponder.cpp b/src/httpserver/qhttpserverresponder.cpp index a5cabd3..c50b4df 100644 --- a/src/httpserver/qhttpserverresponder.cpp +++ b/src/httpserver/qhttpserverresponder.cpp @@ -237,6 +237,9 @@ struct IOChunkedTransfer void readFromInput() { + if (source.isNull()) + return; + if (!isBufferEmpty()) // We haven't consumed all the data yet. return; beginIndex = 0; @@ -252,6 +255,9 @@ struct IOChunkedTransfer void writeToOutput() { + if (sink.isNull() || source.isNull()) + return; + if (isBufferEmpty()) return; |