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