summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIevgenii Meshcheriakov <ievgenii.meshcheriakov@qt.io>2024-01-18 15:48:09 +0100
committerQt Cherry-pick Bot <cherrypick_bot@qt-project.org>2024-01-19 14:05:30 +0000
commit7fd8d5ba666cde70faa53f4f18b4d64ec41bbb3a (patch)
tree2909fb0454999448df5b78e560870b500adf6245
parent7eb1bcc50d5c5843a3fe73cc4789273351b6a24a (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.cpp6
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;