Title: [227621] trunk/Source/WebKit
Revision
227621
Author
[email protected]
Date
2018-01-25 12:13:41 -0800 (Thu, 25 Jan 2018)

Log Message

Fix crash when preconnecting while closing private browsing
https://bugs.webkit.org/show_bug.cgi?id=182114
<rdar://problem/35637284>

Reviewed by Joseph Pecoraro.

* NetworkProcess/PreconnectTask.cpp:
There is a race condition when destroying a session while a page is initiating a preconnect.
If this happens, fail gracefully instead of trying to preconnect with a null session.

Modified Paths

Diff

Modified: trunk/Source/WebKit/ChangeLog (227620 => 227621)


--- trunk/Source/WebKit/ChangeLog	2018-01-25 20:12:38 UTC (rev 227620)
+++ trunk/Source/WebKit/ChangeLog	2018-01-25 20:13:41 UTC (rev 227621)
@@ -1,3 +1,15 @@
+2018-01-25  Alex Christensen  <[email protected]>
+
+        Fix crash when preconnecting while closing private browsing
+        https://bugs.webkit.org/show_bug.cgi?id=182114
+        <rdar://problem/35637284>
+
+        Reviewed by Joseph Pecoraro.
+
+        * NetworkProcess/PreconnectTask.cpp:
+        There is a race condition when destroying a session while a page is initiating a preconnect.
+        If this happens, fail gracefully instead of trying to preconnect with a null session.
+
 2018-01-25  Dan Bernstein  <[email protected]>
 
         [Mac] Enable library validation for Networking & Storage XPC services

Modified: trunk/Source/WebKit/NetworkProcess/PreconnectTask.cpp (227620 => 227621)


--- trunk/Source/WebKit/NetworkProcess/PreconnectTask.cpp	2018-01-25 20:12:38 UTC (rev 227620)
+++ trunk/Source/WebKit/NetworkProcess/PreconnectTask.cpp	2018-01-25 20:13:41 UTC (rev 227621)
@@ -33,6 +33,7 @@
 #include "NetworkLoadParameters.h"
 #include "NetworkProcess.h"
 #include "SessionTracker.h"
+#include "WebErrors.h"
 #include <WebCore/ResourceError.h>
 
 namespace WebKit {
@@ -46,7 +47,11 @@
     RELEASE_LOG(Network, "%p - PreconnectTask::PreconnectTask()", this);
 
     auto* networkSession = SessionTracker::networkSession(parameters.sessionID);
-    ASSERT(networkSession);
+    if (!networkSession) {
+        ASSERT_NOT_REACHED();
+        m_completionHandler(internalError(parameters.request.url()));
+        return;
+    }
 
     ASSERT(parameters.shouldPreconnectOnly == PreconnectOnly::Yes);
     m_networkLoad = std::make_unique<NetworkLoad>(*this, WTFMove(parameters), *networkSession);
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to