Title: [283846] trunk/Source/WebKit
Revision
283846
Author
[email protected]
Date
2021-10-08 15:57:14 -0700 (Fri, 08 Oct 2021)

Log Message

Fix crash in NetworkProcess preconnect due to dereferencing deallocated session
https://bugs.webkit.org/show_bug.cgi?id=231456
<rdar://problem/83752148>

Reviewed by Chris Dumez.

We capture a raw NetworkSession reference in the preconnect completion handler. This
reference could point to a deallocated object if the NetworkSession dies before the
preconnect finishes.

* NetworkProcess/NetworkProcess.cpp:
(WebKit::NetworkProcess::preconnectTo):

Modified Paths

Diff

Modified: trunk/Source/WebKit/ChangeLog (283845 => 283846)


--- trunk/Source/WebKit/ChangeLog	2021-10-08 22:43:49 UTC (rev 283845)
+++ trunk/Source/WebKit/ChangeLog	2021-10-08 22:57:14 UTC (rev 283846)
@@ -1,3 +1,18 @@
+2021-10-08  Ben Nham  <[email protected]>
+
+        Fix crash in NetworkProcess preconnect due to dereferencing deallocated session
+        https://bugs.webkit.org/show_bug.cgi?id=231456
+        <rdar://problem/83752148>
+
+        Reviewed by Chris Dumez.
+
+        We capture a raw NetworkSession reference in the preconnect completion handler. This
+        reference could point to a deallocated object if the NetworkSession dies before the
+        preconnect finishes.
+
+        * NetworkProcess/NetworkProcess.cpp:
+        (WebKit::NetworkProcess::preconnectTo):
+
 2021-10-08  John Pascoe  <[email protected]>
 
         Update getAllLocalAuthenticatorCredentials query according to internal needs

Modified: trunk/Source/WebKit/NetworkProcess/NetworkProcess.cpp (283845 => 283846)


--- trunk/Source/WebKit/NetworkProcess/NetworkProcess.cpp	2021-10-08 22:43:49 UTC (rev 283845)
+++ trunk/Source/WebKit/NetworkProcess/NetworkProcess.cpp	2021-10-08 22:57:14 UTC (rev 283846)
@@ -1388,8 +1388,9 @@
     parameters.shouldPreconnectOnly = PreconnectOnly::Yes;
 
     networkSession->networkLoadScheduler().startedPreconnectForMainResource(url, userAgent);
-    auto task = new PreconnectTask(*networkSession, WTFMove(parameters), [networkSession, url, userAgent](const WebCore::ResourceError& error) {
-        networkSession->networkLoadScheduler().finishedPreconnectForMainResource(url, userAgent, error);
+    auto task = new PreconnectTask(*networkSession, WTFMove(parameters), [weakNetworkSession = makeWeakPtr(*networkSession), url, userAgent](const WebCore::ResourceError& error) {
+        if (weakNetworkSession)
+            weakNetworkSession->networkLoadScheduler().finishedPreconnectForMainResource(url, userAgent, error);
     });
     task->setTimeout(10_s);
     task->start();
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to