Title: [288898] trunk/Source/WebKit
Revision
288898
Author
[email protected]
Date
2022-02-01 11:09:12 -0800 (Tue, 01 Feb 2022)

Log Message

Protect NetworkConnectionToWebProcess::createFetchTask from a null service worker connection
https://bugs.webkit.org/show_bug.cgi?id=235878
<rdar://87785042>

Reviewed by Chris Dumez.

After https://bugs.webkit.org/show_bug.cgi?id=234179, there is no guarantee that we have a SWServer/SWServerConnection per session ID.
This is only guaranteed if there is a corresponding network session.
We add null pointer checks to NetworkConnectionToWebProcess::swConnection() which now returns a pointer.

* NetworkProcess/NetworkConnectionToWebProcess.cpp:
(WebKit::NetworkConnectionToWebProcess::createFetchTask):
(WebKit::NetworkConnectionToWebProcess::swConnection):
* NetworkProcess/NetworkConnectionToWebProcess.h:
* NetworkProcess/ServiceWorker/ServiceWorkerFetchTask.cpp:
(WebKit::ServiceWorkerFetchTask::softUpdateIfNeeded):

Modified Paths

Diff

Modified: trunk/Source/WebKit/ChangeLog (288897 => 288898)


--- trunk/Source/WebKit/ChangeLog	2022-02-01 19:03:45 UTC (rev 288897)
+++ trunk/Source/WebKit/ChangeLog	2022-02-01 19:09:12 UTC (rev 288898)
@@ -1,3 +1,22 @@
+2022-02-01  Youenn Fablet  <[email protected]>
+
+        Protect NetworkConnectionToWebProcess::createFetchTask from a null service worker connection
+        https://bugs.webkit.org/show_bug.cgi?id=235878
+        <rdar://87785042>
+
+        Reviewed by Chris Dumez.
+
+        After https://bugs.webkit.org/show_bug.cgi?id=234179, there is no guarantee that we have a SWServer/SWServerConnection per session ID.
+        This is only guaranteed if there is a corresponding network session.
+        We add null pointer checks to NetworkConnectionToWebProcess::swConnection() which now returns a pointer.
+
+        * NetworkProcess/NetworkConnectionToWebProcess.cpp:
+        (WebKit::NetworkConnectionToWebProcess::createFetchTask):
+        (WebKit::NetworkConnectionToWebProcess::swConnection):
+        * NetworkProcess/NetworkConnectionToWebProcess.h:
+        * NetworkProcess/ServiceWorker/ServiceWorkerFetchTask.cpp:
+        (WebKit::ServiceWorkerFetchTask::softUpdateIfNeeded):
+
 2022-02-01  Eric Carlson  <[email protected]>
 
         [macOS] Expose screen and window capture state to WKWebView

Modified: trunk/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp (288897 => 288898)


--- trunk/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp	2022-02-01 19:03:45 UTC (rev 288897)
+++ trunk/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp	2022-02-01 19:09:12 UTC (rev 288898)
@@ -530,7 +530,10 @@
 #if ENABLE(SERVICE_WORKER)
 std::unique_ptr<ServiceWorkerFetchTask> NetworkConnectionToWebProcess::createFetchTask(NetworkResourceLoader& loader, const ResourceRequest& request)
 {
-    return swConnection().createFetchTask(loader, request);
+    auto* swConnection = this->swConnection();
+    if (!swConnection)
+        return nullptr;
+    return swConnection->createFetchTask(loader, request);
 }
 #endif
 
@@ -1228,11 +1231,11 @@
     m_swContextConnection = nullptr;
 }
 
-WebSWServerConnection& NetworkConnectionToWebProcess::swConnection()
+WebSWServerConnection* NetworkConnectionToWebProcess::swConnection()
 {
     if (!m_swConnection)
         establishSWServerConnection();
-    return *m_swConnection;
+    return m_swConnection.get();
 }
 #endif
 

Modified: trunk/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.h (288897 => 288898)


--- trunk/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.h	2022-02-01 19:03:45 UTC (rev 288897)
+++ trunk/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.h	2022-02-01 19:09:12 UTC (rev 288898)
@@ -182,7 +182,7 @@
 
 #if ENABLE(SERVICE_WORKER)
     void serverToContextConnectionNoLongerNeeded();
-    WebSWServerConnection& swConnection();
+    WebSWServerConnection* swConnection();
     std::unique_ptr<ServiceWorkerFetchTask> createFetchTask(NetworkResourceLoader&, const WebCore::ResourceRequest&);
 #endif
 

Modified: trunk/Source/WebKit/NetworkProcess/ServiceWorker/ServiceWorkerFetchTask.cpp (288897 => 288898)


--- trunk/Source/WebKit/NetworkProcess/ServiceWorker/ServiceWorkerFetchTask.cpp	2022-02-01 19:03:45 UTC (rev 288897)
+++ trunk/Source/WebKit/NetworkProcess/ServiceWorker/ServiceWorkerFetchTask.cpp	2022-02-01 19:09:12 UTC (rev 288898)
@@ -352,7 +352,10 @@
     SWFETCH_RELEASE_LOG("softUpdateIfNeeded: (m_shouldSoftUpdate=%d)", m_shouldSoftUpdate);
     if (!m_shouldSoftUpdate)
         return;
-    if (auto* registration = m_loader.connectionToWebProcess().swConnection().server().getRegistration(m_serviceWorkerRegistrationIdentifier))
+    auto* swConnection = m_loader.connectionToWebProcess().swConnection();
+    if (!swConnection)
+        return;
+    if (auto* registration = swConnection->server().getRegistration(m_serviceWorkerRegistrationIdentifier))
         registration->scheduleSoftUpdate(m_loader.isAppInitiated() ? WebCore::IsAppInitiated::Yes : WebCore::IsAppInitiated::No);
 }
 
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to