From: Allan Sandfeld Jensen Date: Mon, 13 Oct 2014 13:32:14 +0000 (+0200) Subject: Fix crash when a network-request is aborted while forwarding data X-Git-Tag: archive/raspbian/5.212.0_alpha2-6+rpi1~5^2^2^2^2^2^2~9 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=065ae9df8f64ba2d35abaf96213026088f9e2001;p=qtwebkit-opensource-src.git Fix crash when a network-request is aborted while forwarding data Since we forward data block-wise a network request may be aborted while we are still forwarding received data. In that case we should stop the forwarding. Task-number: QTBUG-41877 Change-Id: Ia34bbdcacdc4eb70a2e814d3b4bada9844abbb83 Reviewed-by: Michael Bruning Gbp-Pq: Name fix_crash_when_a_network_request_is_aborted_while_forwarding_data.patch --- diff --git a/Source/WebCore/platform/network/qt/QNetworkReplyHandler.cpp b/Source/WebCore/platform/network/qt/QNetworkReplyHandler.cpp index 5990a407..fc695461 100644 --- a/Source/WebCore/platform/network/qt/QNetworkReplyHandler.cpp +++ b/Source/WebCore/platform/network/qt/QNetworkReplyHandler.cpp @@ -687,9 +687,12 @@ void QNetworkReplyHandler::forwardData() // -1 means we do not provide any data about transfer size to inspector so it would use // Content-Length headers or content size to show transfer size. client->didReceiveData(m_resourceHandle, buffer, readSize, -1); + // Check if the request has been aborted or this reply-handler was otherwise released. + if (wasAborted() || !m_replyWrapper) + break; } delete[] buffer; - if (bytesAvailable > 0) + if (bytesAvailable > 0 && m_replyWrapper) m_queue.requeue(&QNetworkReplyHandler::forwardData); }