⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Changeset 242377 in webkit


Ignore:
Timestamp:
Mar 4, 2019, 12:54:45 PM (7 years ago)
Author:
commit-queue@webkit.org
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 <achristensen@webkit.org> on 2019-03-04
Reviewed by Chris Dumez.

  • NetworkProcess/NetworkLoadChecker.cpp:

(WebKit::NetworkLoadChecker::checkRequest):

Location:
trunk/Source/WebKit
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit/ChangeLog

    r242376 r242377  
     12019-03-04  Alex Christensen  <achristensen@webkit.org>
     2
     3        Fix crashes when NetworkResourceLoader/NetworkLoadChecker are destroyed during HTTPS upgrade check
     4        https://bugs.webkit.org/show_bug.cgi?id=195238
     5        <rdar://problem/47598656>
     6
     7        Reviewed by Chris Dumez.
     8
     9        * NetworkProcess/NetworkLoadChecker.cpp:
     10        (WebKit::NetworkLoadChecker::checkRequest):
     11
    1122019-03-04  Brady Eidson  <beidson@apple.com>
    213
  • trunk/Source/WebKit/NetworkProcess/NetworkLoadChecker.cpp

    r241283 r242377  
    225225    ResourceRequest originalRequest = request;
    226226
    227     applyHTTPSUpgradeIfNeeded(WTFMove(request), [this, client, handler = WTFMove(handler), originalRequest = WTFMove(originalRequest)](auto request) mutable {
     227    applyHTTPSUpgradeIfNeeded(WTFMove(request), [this, weakThis = makeWeakPtr(*this), client, handler = WTFMove(handler), originalRequest = WTFMove(originalRequest)](auto request) mutable {
     228        if (!weakThis)
     229            return handler({ ResourceError { ResourceError::Type::Cancellation }});
    228230
    229231        if (auto* contentSecurityPolicy = this->contentSecurityPolicy()) {
     
    239241
    240242#if ENABLE(CONTENT_EXTENSIONS)
    241         this->processContentExtensionRulesForLoad(WTFMove(request), [this, handler = WTFMove(handler), originalRequest = WTFMove(originalRequest)](auto result) mutable {
     243        this->processContentExtensionRulesForLoad(WTFMove(request), [this, weakThis = WTFMove(weakThis), handler = WTFMove(handler), originalRequest = WTFMove(originalRequest)](auto result) mutable {
    242244            if (!result.has_value()) {
    243245                ASSERT(result.error().isCancellation());
     
    250252            }
    251253
     254            if (!weakThis)
     255                return handler({ ResourceError { ResourceError::Type::Cancellation }});
    252256            this->continueCheckingRequestOrDoSyntheticRedirect(WTFMove(originalRequest), WTFMove(result.value().request), WTFMove(handler));
    253257        });
Note: See TracChangeset for help on using the changeset viewer.