Title: [242377] trunk/Source/WebKit
Revision
242377
Author
[email protected]
Date
2019-03-04 12:54:45 -0800 (Mon, 04 Mar 2019)

Log Message

Fix crashes when NetworkResourceLoader/NetworkLoadChecker are destroyed during HTTPS upgrade check
https://bugs.webkit.org/show_bug.cgi?id=195238
<rdar://problem/47598656>

Patch by Alex Christensen <[email protected]> on 2019-03-04
Reviewed by Chris Dumez.

* NetworkProcess/NetworkLoadChecker.cpp:
(WebKit::NetworkLoadChecker::checkRequest):

Modified Paths

Diff

Modified: trunk/Source/WebKit/ChangeLog (242376 => 242377)


--- trunk/Source/WebKit/ChangeLog	2019-03-04 20:39:33 UTC (rev 242376)
+++ trunk/Source/WebKit/ChangeLog	2019-03-04 20:54:45 UTC (rev 242377)
@@ -1,3 +1,14 @@
+2019-03-04  Alex Christensen  <[email protected]>
+
+        Fix crashes when NetworkResourceLoader/NetworkLoadChecker are destroyed during HTTPS upgrade check
+        https://bugs.webkit.org/show_bug.cgi?id=195238
+        <rdar://problem/47598656>
+
+        Reviewed by Chris Dumez.
+
+        * NetworkProcess/NetworkLoadChecker.cpp:
+        (WebKit::NetworkLoadChecker::checkRequest):
+
 2019-03-04  Brady Eidson  <[email protected]>
 
         Correctly handle sandbox extensions when the same WKWebView loads multiple file:// URLs.

Modified: trunk/Source/WebKit/NetworkProcess/NetworkLoadChecker.cpp (242376 => 242377)


--- trunk/Source/WebKit/NetworkProcess/NetworkLoadChecker.cpp	2019-03-04 20:39:33 UTC (rev 242376)
+++ trunk/Source/WebKit/NetworkProcess/NetworkLoadChecker.cpp	2019-03-04 20:54:45 UTC (rev 242377)
@@ -224,7 +224,9 @@
 {
     ResourceRequest originalRequest = request;
 
-    applyHTTPSUpgradeIfNeeded(WTFMove(request), [this, client, handler = WTFMove(handler), originalRequest = WTFMove(originalRequest)](auto request) mutable {
+    applyHTTPSUpgradeIfNeeded(WTFMove(request), [this, weakThis = makeWeakPtr(*this), client, handler = WTFMove(handler), originalRequest = WTFMove(originalRequest)](auto request) mutable {
+        if (!weakThis)
+            return handler({ ResourceError { ResourceError::Type::Cancellation }});
 
         if (auto* contentSecurityPolicy = this->contentSecurityPolicy()) {
             if (this->isRedirected()) {
@@ -238,7 +240,7 @@
         }
 
 #if ENABLE(CONTENT_EXTENSIONS)
-        this->processContentExtensionRulesForLoad(WTFMove(request), [this, handler = WTFMove(handler), originalRequest = WTFMove(originalRequest)](auto result) mutable {
+        this->processContentExtensionRulesForLoad(WTFMove(request), [this, weakThis = WTFMove(weakThis), handler = WTFMove(handler), originalRequest = WTFMove(originalRequest)](auto result) mutable {
             if (!result.has_value()) {
                 ASSERT(result.error().isCancellation());
                 handler(WTFMove(result.error()));
@@ -249,6 +251,8 @@
                 return;
             }
 
+            if (!weakThis)
+                return handler({ ResourceError { ResourceError::Type::Cancellation }});
             this->continueCheckingRequestOrDoSyntheticRedirect(WTFMove(originalRequest), WTFMove(result.value().request), WTFMove(handler));
         });
 #else
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to