Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 899dd99924a82b239242807fe962e5e526dcb294
https://github.com/WebKit/WebKit/commit/899dd99924a82b239242807fe962e5e526dcb294
Author: Brady Eidson <[email protected]>
Date: 2026-07-02 (Thu, 02 Jul 2026)
Changed paths:
M Source/WebCore/dom/messageports/MessagePortChannel.h
M Source/WebCore/dom/messageports/MessagePortChannelRegistry.cpp
M Source/WebCore/dom/messageports/MessagePortChannelRegistry.h
M Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp
M Source/WebKit/NetworkProcess/NetworkProcess.cpp
M Source/WebKit/NetworkProcess/NetworkProcess.h
M Source/WebKit/NetworkProcess/NetworkProcess.messages.in
M Source/WebKit/NetworkProcess/ServiceWorker/WebSWServerConnection.cpp
M
Source/WebKit/NetworkProcess/SharedWorker/WebSharedWorkerServerToContextConnection.cpp
M Source/WebKit/UIProcess/WebPageProxy.cpp
M Source/WebKit/WebProcess/WebCoreSupport/WebMessagePortChannelProvider.cpp
M Tools/TestWebKitAPI/Resources/cocoa/MessagePortSecurity.mm
Log Message:
-----------
Guard against MessagePort confusion in the Network Process
rdar://175679886
Reviewed by Alex Christensen.
The Networking process is in charge of transferring message port ownership
between web processes,
as well as sending/fetching messages for web processes.
This patch teaches it to keep track of web ports are being transferred to and
from, which enables
much more thorough message checking of message port operations based on where
they currently belong.
Covered by new API tests.
* Source/WebCore/dom/messageports/MessagePortChannel.h:
* Source/WebCore/dom/messageports/MessagePortChannelRegistry.cpp:
(WebCore::MessagePortChannelRegistry::messagePortChannelDestroyed):
(WebCore::MessagePortChannelRegistry::recordPendingTransferOrigin):
(WebCore::MessagePortChannelRegistry::claimPendingTransferOrigin):
(WebCore::MessagePortChannelRegistry::recordPendingTransferDestination):
(WebCore::MessagePortChannelRegistry::claimPendingTransferDestination):
* Source/WebCore/dom/messageports/MessagePortChannelRegistry.h:
* Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp:
(WebKit::NetworkConnectionToWebProcess::createNewMessagePortChannel):
(WebKit::NetworkConnectionToWebProcess::entangleLocalPortInThisProcessToRemote):
(WebKit::NetworkConnectionToWebProcess::messagePortDisentangled):
(WebKit::NetworkConnectionToWebProcess::messagePortClosed):
(WebKit::NetworkConnectionToWebProcess::takeAllMessagesForPort):
(WebKit::NetworkConnectionToWebProcess::postMessageToRemote):
* Source/WebKit/NetworkProcess/ServiceWorker/WebSWServerConnection.cpp:
(WebKit::WebSWServerConnection::resolveUnregistrationJobInClient):
*
Source/WebKit/NetworkProcess/SharedWorker/WebSharedWorkerServerToContextConnection.cpp:
(WebKit::WebSharedWorkerServerToContextConnection::postConnectEvent):
* Source/WebKit/WebProcess/WebCoreSupport/WebMessagePortChannelProvider.cpp:
(WebKit::WebMessagePortChannelProvider::messagePortClosed):
* Tools/TestWebKitAPI/Resources/cocoa/MessagePortSecurity.mm:
((MessagePortSecurity,
CrossProcessForcedCloseViaUnauthenticatedMessagePortIdentifier)):
((MessagePortSecurity,
CrossProcessForcedDisentangleViaUnauthenticatedMessagePortIdentifier)):
((MessagePortSecurity,
CrossProcessForcedEntangleViaUnauthenticatedMessagePortIdentifier)):
((MessagePortSecurity, CrossProcessChannelCreationWithForgedProcessIdentifier)):
Canonical link: https://commits.webkit.org/316423@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications