Branch: refs/heads/webkitglib/2.44 Home: https://github.com/WebKit/WebKit Commit: e93bb5b3910212e7e93c6ea1a74d48ac5bc1fb31 https://github.com/WebKit/WebKit/commit/e93bb5b3910212e7e93c6ea1a74d48ac5bc1fb31 Author: Georges Basile Stavracas Neto <feane...@igalia.com> Date: 2024-05-28 (Tue, 28 May 2024)
Changed paths: M Tools/TestWebKitAPI/Tests/WebKitGtk/TestInspectorServer.cpp M Tools/TestWebKitAPI/Tests/WebKitGtk/TestWebViewEditor.cpp Log Message: ----------- Cherry-pick 279185@main (aa28356f83b8). https://bugs.webkit.org/show_bug.cgi?id=274578 [GTK] Build failures in TestWebKitAPI for WebKitGTK https://bugs.webkit.org/show_bug.cgi?id=274578 Unreviewed build fix. Add explicit return types to the lambdas, which makes Clang happy enough to finish the build. * Tools/TestWebKitAPI/Tests/WebKitGtk/TestInspectorServer.cpp: * Tools/TestWebKitAPI/Tests/WebKitGtk/TestWebViewEditor.cpp: Canonical link: https://commits.webkit.org/279185@main Canonical link: https://commits.webkit.org/274313.266@webkitglib/2.44 Commit: 40ddaf4044d23d8a708ffb11a5d5049e0fb94022 https://github.com/WebKit/WebKit/commit/40ddaf4044d23d8a708ffb11a5d5049e0fb94022 Author: Alexey Shvayka <ashva...@apple.com> Date: 2024-05-28 (Tue, 28 May 2024) Changed paths: M Source/JavaScriptCore/runtime/CustomGetterSetter.h Log Message: ----------- Cherry-pick 272448.523@safari-7618-branch (66d8614c41ca). https://bugs.webkit.org/show_bug.cgi?id=268897 [JSC] Harden CustomGetterSetter by adding MethodTable overrides that always crash https://bugs.webkit.org/show_bug.cgi?id=268897 <rdar://122171568> Reviewed by Mark Lam. Just like GetterSetter, CustomGetterSetter is never purposely exposed to userland code. However, to make exploitation of accidentally exposed CustomGetterSetter objects difficult, this patch implements MethodTable overrides that abort the program when reached, similar to GetterSetter. * Source/JavaScriptCore/runtime/CustomGetterSetter.h: (JSC::CustomGetterSetter::getOwnPropertySlot): (JSC::CustomGetterSetter::put): (JSC::CustomGetterSetter::putByIndex): (JSC::CustomGetterSetter::setPrototype): (JSC::CustomGetterSetter::defineOwnProperty): (JSC::CustomGetterSetter::deleteProperty): Canonical link: https://commits.webkit.org/272448.523@safari-7618-branch Canonical link: https://commits.webkit.org/274313.267@webkitglib/2.44 Commit: 5e5cde0c683fd8e3c901b633d446cc432ecc63f3 https://github.com/WebKit/WebKit/commit/5e5cde0c683fd8e3c901b633d446cc432ecc63f3 Author: Said Abou-Hallawa <s...@apple.com> Date: 2024-05-28 (Tue, 28 May 2024) Changed paths: M LayoutTests/css3/filters/filter-visited-links-expected.html M LayoutTests/css3/filters/filter-visited-links.html M Source/WebCore/rendering/InlineBoxPainter.cpp Log Message: ----------- Cherry-pick 272448.560@safari-7618-branch (36df2fc04fb9). https://bugs.webkit.org/show_bug.cgi?id=262337 Prevent SVG filters from leaking the background of visited hyperlinks https://bugs.webkit.org/show_bug.cgi?id=262337 rdar://116206368 Reviewed by Simon Fraser. We should prevent websites from learning which sites have been visited via SVG filters on hyperlinks, per the attack described in https://arxiv.org/abs/2305.12784. This is a follow up for 266683@main. The background color of the visited links should be ignored when an SVG filter is applied. * LayoutTests/css3/filters/filter-visited-links-expected.html: * LayoutTests/css3/filters/filter-visited-links.html: * Source/WebCore/rendering/InlineBoxPainter.cpp: (WebCore::InlineBoxPainter::paintDecorations): Canonical link: https://commits.webkit.org/272448.560@safari-7618-branch Canonical link: https://commits.webkit.org/274313.268@webkitglib/2.44 Commit: e5b99737a050e85bb92878e04bad9ed2a49b5b74 https://github.com/WebKit/WebKit/commit/e5b99737a050e85bb92878e04bad9ed2a49b5b74 Author: Scott Marcy <msc...@apple.com> Date: 2024-05-28 (Tue, 28 May 2024) Changed paths: A LayoutTests/fast/svg/mutual-recursion-test-expected.txt A LayoutTests/fast/svg/mutual-recursion-test.html M Source/WebCore/rendering/svg/SVGResources.cpp M Source/WebCore/rendering/svg/SVGResources.h Log Message: ----------- Cherry-pick 272448.561@safari-7618-branch (e14592228595). https://bugs.webkit.org/show_bug.cgi?id=268556 Break a mutual recursion cycle laying out SVG elements. https://bugs.webkit.org/show_bug.cgi?id=268556 rdar://118510445 Reviewed by shallawa (Said Abou-Hallawa). Breaks the recursion cycle by having the SVGResource object track if it is already doing layout for a different root. * LayoutTests/fast/svg/mutual-recursion-test-expected.txt: Added. * LayoutTests/fast/svg/mutual-recursion-test.html: Added. * Source/WebCore/rendering/svg/SVGResources.cpp: (WebCore::SVGResources::layoutDifferentRootIfNeeded): * Source/WebCore/rendering/svg/SVGResources.h: Canonical link: https://commits.webkit.org/272448.561@safari-7618-branch Canonical link: https://commits.webkit.org/274313.269@webkitglib/2.44 Commit: b304ede731cf4bfbbf069c39206047eee9bf7ce4 https://github.com/WebKit/WebKit/commit/b304ede731cf4bfbbf069c39206047eee9bf7ce4 Author: Keith Miller <keith_mil...@apple.com> Date: 2024-05-28 (Tue, 28 May 2024) Changed paths: M Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp Log Message: ----------- Cherry-pick 272448.563@safari-7618-branch (630351ee51ab). https://bugs.webkit.org/show_bug.cgi?id=269220 [JSC] presenceConditionIfConsistent should check knownBase's structure is in the structure set https://bugs.webkit.org/show_bug.cgi?id=269220 rdar://122171551 Reviewed by Yusuke Suzuki. This patch rewrites ByteCodeParser::presenceConditionIfConsistent. Now it just checks that the presence condition we're trying to create is possible for the knownBase. Additionally, we have to check that the knownBase's structure was executed at least once before. This allows us to know if GetOwnPropertySlot ran successfully at least once for this structure. * Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp: (JSC::DFG::ByteCodeParser::presenceConditionIfConsistent): Canonical link: https://commits.webkit.org/272448.563@safari-7618-branch Canonical link: https://commits.webkit.org/274313.270@webkitglib/2.44 Commit: 04cf158f8e87d105da76842c5a7b6beb03b5d88a https://github.com/WebKit/WebKit/commit/04cf158f8e87d105da76842c5a7b6beb03b5d88a Author: Tyler Wilcock <tyle...@apple.com> Date: 2024-05-28 (Tue, 28 May 2024) Changed paths: M Source/WebCore/accessibility/AccessibilityListBoxOption.cpp Log Message: ----------- Cherry-pick 272448.566@safari-7618-branch (1bd91e17cd5b). rdar://122892805 AX: AccessibilityListBoxOption::elementRect() should use dynamicDowncast instead of downcast rdar://122892805 Reviewed by Chris Fleizach. Failing to do so can cause a crash. Also improve smart pointer usage in this function, and eliminate instances of doing work that never gets used depending on branches taken. * Source/WebCore/accessibility/AccessibilityListBoxOption.cpp: (WebCore::AccessibilityListBoxOption::elementRect const): Canonical link: https://commits.webkit.org/272448.566@safari-7618-branch Canonical link: https://commits.webkit.org/274313.271@webkitglib/2.44 Commit: 9dd183796e2397fd36dd52809ea82c379a9e0a2b https://github.com/WebKit/WebKit/commit/9dd183796e2397fd36dd52809ea82c379a9e0a2b Author: Ryosuke Niwa <rn...@webkit.org> Date: 2024-05-28 (Tue, 28 May 2024) Changed paths: A LayoutTests/http/tests/security/contentSecurityPolicy/nonce-hiding-on-svg-script-expected.txt A LayoutTests/http/tests/security/contentSecurityPolicy/nonce-hiding-on-svg-script.py M Source/WebCore/dom/ScriptElement.cpp M Source/WebCore/svg/SVGElement.cpp Log Message: ----------- Cherry-pick 272448.567@safari-7618-branch (d915a3b6357c). https://bugs.webkit.org/show_bug.cgi?id=268598 nonce hiding in SVG is buggy https://bugs.webkit.org/show_bug.cgi?id=268598 Reviewed by Chris Dumez. The bug was caused by SVGElement::insertedIntoAncestor hiding nonce after it had an early exit for returning InsertedIntoAncestorResult::NeedsPostInsertionCallback. Fixed the bug by hiding it before this early exit. * LayoutTests/http/tests/security/contentSecurityPolicy/nonce-hiding-on-svg-script-expected.txt: Added. * LayoutTests/http/tests/security/contentSecurityPolicy/nonce-hiding-on-svg-script.py: Added. * Source/WebCore/dom/ScriptElement.cpp: (WebCore::ScriptElement::didFinishInsertingNode): * Source/WebCore/svg/SVGElement.cpp: (WebCore::SVGElement::insertedIntoAncestor): Canonical link: https://commits.webkit.org/272448.567@safari-7618-branch Canonical link: https://commits.webkit.org/274313.272@webkitglib/2.44 Commit: 2fdf11cf5f045bde902d2b37642685551ef61041 https://github.com/WebKit/WebKit/commit/2fdf11cf5f045bde902d2b37642685551ef61041 Author: Chris Dumez <cdu...@apple.com> Date: 2024-05-28 (Tue, 28 May 2024) Changed paths: M Source/WebCore/workers/WorkerOrWorkletThread.cpp Log Message: ----------- Cherry-pick 272448.578@safari-7618-branch (459d377c63c2). https://bugs.webkit.org/show_bug.cgi?id=269731 Flaky crash under WorkerDedicatedRunLoop::runCleanupTasks() during fuzzing https://bugs.webkit.org/show_bug.cgi?id=269731 rdar://121961101 Reviewed by Brent Fulgham. I haven't been able to reproduce but based on the ASAN report, it looks like the WorkerOrWorkletGlobalScope is getting destroyed in the middle of WorkerDedicatedRunLoop::runCleanupTasks(), causing a use-after free of the context. To make sure this can't happen, apply our smart pointer adoption rules and make sure the WorkerOrWorkletGlobalScope is being protected on the stack at the call site of WorkerDedicatedRunLoop::run() before passing it in argument. * Source/WebCore/workers/WorkerOrWorkletThread.cpp: (WebCore::WorkerOrWorkletThread::runEventLoop): Canonical link: https://commits.webkit.org/272448.578@safari-7618-branch Canonical link: https://commits.webkit.org/274313.273@webkitglib/2.44 Commit: 2153a1f55818faea01a1567be2785afad389890d https://github.com/WebKit/WebKit/commit/2153a1f55818faea01a1567be2785afad389890d Author: Wenson Hsieh <wenson_hs...@apple.com> Date: 2024-05-28 (Tue, 28 May 2024) Changed paths: M Source/WebCore/loader/EmptyClients.cpp M Source/WebCore/page/EditorClient.h M Source/WebCore/page/LocalFrame.cpp M Source/WebKit/UIProcess/WebPageProxy.cpp M Source/WebKit/UIProcess/WebPageProxy.h M Source/WebKit/UIProcess/WebPageProxy.messages.in M Source/WebKit/WebProcess/WebCoreSupport/WebEditorClient.cpp M Source/WebKit/WebProcess/WebCoreSupport/WebEditorClient.h M Source/WebKit/WebProcess/WebPage/WebPage.cpp M Source/WebKit/WebProcess/WebPage/WebPage.h M Source/WebKitLegacy/mac/WebCoreSupport/WebEditorClient.h Log Message: ----------- Cherry-pick 272448.579@safari-7618-branch (be0e10372eb5). https://bugs.webkit.org/show_bug.cgi?id=269769 Compromised web process can grant pasteboard access by spamming WebPage::RequestDOMPasteAccess https://bugs.webkit.org/show_bug.cgi?id=269769 rdar://97343267 Reviewed by Ryosuke Niwa and Richard Robinson. It's currently possible for a compromised web process to send arbitrary `originIdentifiers` through `requestDOMPasteAccess` to the UI process during programmatic paste. Since the UI process automatically grants programmatic pasteboard access in the case where the incoming origin ID matches the origin ID of the current pasteboard content, it's possible to send a large number of origins through this IPC endpoint, with the end goal of discovering both (1) which website origin the user last copied from, and (2) the contents of the pasteboard in the case where the pasteboard copied from web content in WebKit. To mitigate this attack vector, we add a `FrameIdentifier` in the IPC endpoint, which is used in the UI process to verify that: 1. The incoming frame ID corresponds to a frame underneath the destination page. 2. The pasteboard origin matches the origin of the frame, unless the pasteboard origin is an opaque (null) origin. Additionally, we throttle pasteboard access requests to a maximum of 10 different domains every 5 seconds, to mitigate another variation on this attack vector where the compromised web process loads a large number of cross-origin frames and requests pasteboard access on behalf of those origins, in an attempt to get around the limitations above. With this change, a compromised web process is only capable of grabbing data for a pasteboard origin that matches itself, or another origin under the same `WebPage`. * Source/WebCore/loader/EmptyClients.cpp: * Source/WebCore/page/EditorClient.h: * Source/WebCore/page/LocalFrame.cpp: (WebCore::LocalFrame::requestDOMPasteAccess): * Source/WebKit/UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::requestDOMPasteAccess): Add the new `MESSAGE_CHECK`s. * Source/WebKit/UIProcess/WebPageProxy.h: * Source/WebKit/UIProcess/WebPageProxy.messages.in: * Source/WebKit/WebProcess/WebCoreSupport/WebEditorClient.cpp: (WebKit::WebEditorClient::requestDOMPasteAccess): * Source/WebKit/WebProcess/WebCoreSupport/WebEditorClient.h: * Source/WebKit/WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::requestDOMPasteAccess): * Source/WebKit/WebProcess/WebPage/WebPage.h: * Source/WebKitLegacy/mac/WebCoreSupport/WebEditorClient.h: Canonical link: https://commits.webkit.org/272448.579@safari-7618-branch Canonical link: https://commits.webkit.org/274313.274@webkitglib/2.44 Commit: c65c2f9c0a8ea51f003b59322819c80dddd7d988 https://github.com/WebKit/WebKit/commit/c65c2f9c0a8ea51f003b59322819c80dddd7d988 Author: Nisha Jain <nisha_j...@apple.com> Date: 2024-05-28 (Tue, 28 May 2024) Changed paths: A LayoutTests/fast/rendering/render-layer-with-providedbacking-crash-expected.txt A LayoutTests/fast/rendering/render-layer-with-providedbacking-crash.html M Source/WebCore/rendering/RenderLayer.cpp Log Message: ----------- Cherry-pick 272448.600@safari-7618-branch (fc090f6ee88d). https://bugs.webkit.org/show_bug.cgi?id=269865 RenderLayer : Unbalanced begin/endTransparencyLayers with nested masked elements and backing sharing causes a crash. https://bugs.webkit.org/show_bug.cgi?id=269865 rdar://113144444. Reviewed by Simon Fraser. In order to balance the begin/endTransparencyLayers call for a TransparencyLayer with nested masked elements and backing sharing, added 'provided backing/paint to' into account while doing 'ancestor' traversal. * LayoutTests/fast/rendering/render-layer-with-providedbacking-crash-expected.txt: Added. * LayoutTests/fast/rendering/render-layer-with-providedbacking-crash.html: Added. * Source/WebCore/rendering/RenderLayer.cpp: (WebCore::RenderLayer::transparentPaintingAncestor): Canonical link: https://commits.webkit.org/272448.600@safari-7618-branch Canonical link: https://commits.webkit.org/274313.275@webkitglib/2.44 Commit: b584f36a37b9951596d4445a8627dd72c7eb9d41 https://github.com/WebKit/WebKit/commit/b584f36a37b9951596d4445a8627dd72c7eb9d41 Author: Antti Koivisto <an...@apple.com> Date: 2024-05-28 (Tue, 28 May 2024) Changed paths: A LayoutTests/fast/ruby/ruby-continuation-crash-expected.txt A LayoutTests/fast/ruby/ruby-continuation-crash.html M Source/WebCore/rendering/updating/RenderTreeBuilder.cpp Log Message: ----------- Cherry-pick 272448.763@safari-7618-branch (df9629adcf83). https://bugs.webkit.org/show_bug.cgi?id=271167 Crash with ruby and continuations https://bugs.webkit.org/show_bug.cgi?id=271167 rdar://124432235 Reviewed by Ryosuke Niwa. * LayoutTests/fast/ruby/ruby-continuation-crash-expected.txt: Added. * LayoutTests/fast/ruby/ruby-continuation-crash.html: Added. * Source/WebCore/rendering/updating/RenderTreeBuilder.cpp: (WebCore::RenderTreeBuilder::destroyAndCleanUpAnonymousWrappers): Improve robustness by using WeakPtr for destroyRoot and null checking before calling destroy(*destroyRoot) as it might get deleted by an earlier destroy() call. Canonical link: https://commits.webkit.org/272448.763@safari-7618-branch Canonical link: https://commits.webkit.org/274313.276@webkitglib/2.44 Commit: 0570649a48242bce89bba815c19a98c4f9d07c96 https://github.com/WebKit/WebKit/commit/0570649a48242bce89bba815c19a98c4f9d07c96 Author: Wenson Hsieh <wenson_hs...@apple.com> Date: 2024-05-28 (Tue, 28 May 2024) Changed paths: M Source/WebCore/Modules/webaudio/AudioWorkletMessagingProxy.cpp M Source/WebCore/dom/Document.cpp M Source/WebCore/dom/Document.h M Source/WebCore/dom/EmptyScriptExecutionContext.h M Source/WebCore/dom/ScriptExecutionContext.h M Source/WebCore/page/Page.cpp M Source/WebCore/page/Page.h M Source/WebCore/workers/Worker.cpp M Source/WebCore/workers/WorkerGlobalScope.cpp M Source/WebCore/workers/WorkerInitializationData.h M Source/WebCore/workers/WorkerMessagingProxy.cpp M Source/WebCore/workers/WorkerOrWorkletGlobalScope.cpp M Source/WebCore/workers/WorkerOrWorkletGlobalScope.h M Source/WebCore/workers/WorkerScriptLoader.cpp M Source/WebCore/workers/WorkerScriptLoader.h M Source/WebCore/workers/WorkerThread.cpp M Source/WebCore/workers/WorkerThread.h M Source/WebCore/workers/service/ServiceWorkerClientData.cpp M Source/WebCore/workers/service/ServiceWorkerClientData.h M Source/WebCore/workers/service/context/ServiceWorkerThread.cpp M Source/WebCore/workers/service/context/ServiceWorkerThread.h M Source/WebCore/workers/service/context/ServiceWorkerThreadProxy.cpp M Source/WebCore/workers/service/server/SWServer.cpp M Source/WebCore/workers/service/server/SWServer.h M Source/WebCore/workers/service/server/SWServerToContextConnection.h M Source/WebCore/workers/shared/SharedWorkerScriptLoader.cpp M Source/WebCore/workers/shared/context/SharedWorkerThreadProxy.cpp M Source/WebCore/worklets/WorkletGlobalScope.cpp M Source/WebCore/worklets/WorkletParameters.h M Source/WebKit/NetworkProcess/ServiceWorker/WebSWServerConnection.cpp M Source/WebKit/NetworkProcess/ServiceWorker/WebSWServerToContextConnection.cpp M Source/WebKit/NetworkProcess/ServiceWorker/WebSWServerToContextConnection.h M Source/WebKit/Shared/WebCoreArgumentCoders.serialization.in M Source/WebKit/WebProcess/Storage/WebSWContextManagerConnection.cpp M Source/WebKit/WebProcess/Storage/WebSWContextManagerConnection.h M Source/WebKit/WebProcess/Storage/WebSWContextManagerConnection.messages.in M Source/WebKit/WebProcess/Storage/WebSharedWorkerContextManagerConnection.cpp M Tools/TestWebKitAPI/Tests/WebKit/AdvancedPrivacyProtections.mm Log Message: ----------- Cherry-pick 272448.764@safari-7618-branch (e285de6f4a70). https://bugs.webkit.org/show_bug.cgi?id=271159 [Private Browsing] Noise injection doesn't apply when using OffscreenCanvas in shared/service workers https://bugs.webkit.org/show_bug.cgi?id=271159 rdar://124702163 Reviewed by Sihui Liu and Chris Dumez. In Private Browsing mode in Safari 17, each `ScriptExecutionContext` has a noise injection hash salt (unique by security origin) and `AdvancedPrivacyProtections` flags, sourced from the document loader. These are used to generate noise when reading pixels back from `canvas` or `OffscreenCanvas`. For dedicated workers, plumbing already exists to propagate the hash salt via `WorkerParameters` to `WorkerGlobalScope`, where they apply to `OffscreenCanvas`. However, for both shared workers and service workers, this is insufficient, since the `OffscreenCanvas` APIs are called in a separate, potentially-remote `Page` (which currently has neither a hash salt nor the requisite `AdvancedPrivacyProtections` flags). To fix this, we extend `AdvancedPrivacyProtection` flag plumbing to work for these two remaining types of workers; see below for more details. Test: AdvancedPrivacyProtections.NoiseInjectionForOffscreenCanvasInSharedWorker * Source/WebCore/Modules/webaudio/AudioWorkletMessagingProxy.cpp: (WebCore::generateWorkletParameters): * Source/WebCore/dom/Document.cpp: (WebCore::Document::noiseInjectionPolicy const): (WebCore::Document::advancedPrivacyProtections const): * Source/WebCore/dom/Document.h: * Source/WebCore/dom/EmptyScriptExecutionContext.h: * Source/WebCore/dom/ScriptExecutionContext.h: Add an override point to return the set of active advanced privacy protection flags. For `Document`, this goes through the top document's loader. For worklets and workers, this state is passed in via `WorkerParameters` and `WorkletParameters`. * Source/WebCore/page/Page.cpp: (WebCore::Page::setupForRemoteWorker): Allow shared/service workers to pass in privacy protections when initializing the remote `Page`. * Source/WebCore/page/Page.h: * Source/WebCore/workers/Worker.cpp: (WebCore::Worker::notifyFinished): * Source/WebCore/workers/WorkerGlobalScope.cpp: (WebCore::WorkerGlobalScope::WorkerGlobalScope): * Source/WebCore/workers/WorkerInitializationData.h: (WebCore::WorkerInitializationData::isolatedCopy const): * Source/WebCore/workers/WorkerMessagingProxy.cpp: (WebCore::WorkerMessagingProxy::startWorkerGlobalScope): * Source/WebCore/workers/WorkerOrWorkletGlobalScope.cpp: (WebCore::WorkerOrWorkletGlobalScope::WorkerOrWorkletGlobalScope): * Source/WebCore/workers/WorkerOrWorkletGlobalScope.h: (WebCore::WorkerOrWorkletGlobalScope::WorkerOrWorkletGlobalScope): * Source/WebCore/workers/WorkerScriptLoader.cpp: (WebCore::WorkerScriptLoader::loadSynchronously): (WebCore::WorkerScriptLoader::loadAsynchronously): * Source/WebCore/workers/WorkerScriptLoader.h: (WebCore::WorkerScriptLoader::advancedPrivacyProtections const): Add a member as well as a getter to keep track of the active privacy protections for the currently loading (or loaded) worker. Later consulted in `SharedWorkerScriptLoader` to plumb the protection options into `WorkerInitializationData`, when spinning up shared workers. * Source/WebCore/workers/WorkerThread.cpp: (WebCore::WorkerParameters::isolatedCopy const): * Source/WebCore/workers/WorkerThread.h: * Source/WebCore/workers/service/ServiceWorkerClientData.cpp: (WebCore::ServiceWorkerClientData::isolatedCopy const): (WebCore::ServiceWorkerClientData::isolatedCopy): (WebCore::ServiceWorkerClientData::from): * Source/WebCore/workers/service/ServiceWorkerClientData.h: * Source/WebCore/workers/service/context/ServiceWorkerThread.cpp: (WebCore::generateWorkerParameters): (WebCore::ServiceWorkerThread::ServiceWorkerThread): * Source/WebCore/workers/service/context/ServiceWorkerThread.h: * Source/WebCore/workers/service/context/ServiceWorkerThreadProxy.cpp: (WebCore::ServiceWorkerThreadProxy::ServiceWorkerThreadProxy): * Source/WebCore/workers/service/server/SWServer.cpp: (WebCore::forEachClientForOriginImpl): (WebCore::SWServer::forEachClientForOrigin const): (WebCore::SWServer::forEachClientForOrigin): (WebCore::SWServer::advancedPrivacyProtectionsFromClient const): When installing a new service worker, consult the set of matching clients (by client origin), to check if any clients of the service worker have active privacy protections; pass along the union of these active policies when installing the service worker. (WebCore::SWServer::installContextData): Pass in `AdvancedPrivacyProtections` when spinning up a new service worker. (WebCore::SWServer::runServiceWorker): * Source/WebCore/workers/service/server/SWServer.h: * Source/WebCore/workers/service/server/SWServerToContextConnection.h: * Source/WebCore/workers/shared/SharedWorkerScriptLoader.cpp: (WebCore::SharedWorkerScriptLoader::notifyFinished): * Source/WebCore/workers/shared/context/SharedWorkerThreadProxy.cpp: (WebCore::generateWorkerParameters): * Source/WebCore/worklets/WorkletGlobalScope.cpp: (WebCore::WorkletGlobalScope::WorkletGlobalScope): * Source/WebCore/worklets/WorkletParameters.h: (WebCore::WorkletParameters::isolatedCopy const): (WebCore::WorkletParameters::isolatedCopy): * Source/WebKit/NetworkProcess/ServiceWorker/WebSWServerConnection.cpp: (WebKit::WebSWServerConnection::controlClient): * Source/WebKit/NetworkProcess/ServiceWorker/WebSWServerToContextConnection.cpp: (WebKit::WebSWServerToContextConnection::installServiceWorkerContext): * Source/WebKit/NetworkProcess/ServiceWorker/WebSWServerToContextConnection.h: * Source/WebKit/Shared/WebCoreArgumentCoders.serialization.in: * Source/WebKit/WebProcess/Storage/WebSWContextManagerConnection.cpp: (WebKit::WebSWContextManagerConnection::installServiceWorker): Call `setupForRemoteWorker` with the privacy protection flags. * Source/WebKit/WebProcess/Storage/WebSWContextManagerConnection.h: * Source/WebKit/WebProcess/Storage/WebSWContextManagerConnection.messages.in: * Source/WebKit/WebProcess/Storage/WebSharedWorkerContextManagerConnection.cpp: (WebKit::WebSharedWorkerContextManagerConnection::launchSharedWorker): Call `setupForRemoteWorker` with the privacy protection flags. * Tools/TestWebKitAPI/Tests/WebKit/AdvancedPrivacyProtections.mm: (TestWebKitAPI::sharedWorkerMainBytes): Add a new API test. Canonical link: https://commits.webkit.org/272448.764@safari-7618-branch Canonical link: https://commits.webkit.org/274313.277@webkitglib/2.44 Commit: 279c9d7963182cc35cf4e0bfebe87df2d83eaef8 https://github.com/WebKit/WebKit/commit/279c9d7963182cc35cf4e0bfebe87df2d83eaef8 Author: Keith Miller <keith_mil...@apple.com> Date: 2024-05-28 (Tue, 28 May 2024) Changed paths: A JSTests/wasm/stress/many-calls-results-on-stack.js M Source/JavaScriptCore/wasm/WasmBBQJIT.cpp Log Message: ----------- Cherry-pick 272448.770@safari-7618-branch (6d311cd7fefc). https://bugs.webkit.org/show_bug.cgi?id=271175 BBQ needs to move stack results from a call to their canonical location https://bugs.webkit.org/show_bug.cgi?id=271175 rdar://124060867 Reviewed by Yusuke Suzuki. Right now we can end up clobbering a value, `X`, on the stack in BBQ because it gets left in a `StackArgument` `Location` after a call. This breaks when a later call before `X` has been consumed would set the same `StackArgument` location as `X`. The fix is to just always move stack results to their canonical location. This is probably fine because stack results are super rare in practice. * JSTests/wasm/stress/many-calls-results-on-stack.js: Added. (repeat): (check): (async test): * Source/JavaScriptCore/wasm/WasmBBQJIT.cpp: (JSC::Wasm::BBQJIT::returnValuesFromCall): Canonical link: https://commits.webkit.org/272448.770@safari-7618-branch Canonical link: https://commits.webkit.org/274313.278@webkitglib/2.44 Commit: 2e380f6b35eee137028c7485fc2043029cd6da30 https://github.com/WebKit/WebKit/commit/2e380f6b35eee137028c7485fc2043029cd6da30 Author: David Degazio <d_dega...@apple.com> Date: 2024-05-28 (Tue, 28 May 2024) Changed paths: A JSTests/wasm/stress/catch-should-keep-alive-inline-parent-expression-stack.js M Source/JavaScriptCore/wasm/WasmB3IRGenerator.cpp Log Message: ----------- Cherry-pick 272448.849@safari-7618-branch (0b59e3f5e9ff). https://bugs.webkit.org/show_bug.cgi?id=271987 [JSC] Catch should preserve top expression stack of inline parents in OMG https://bugs.webkit.org/show_bug.cgi?id=271987 rdar://125145754 Reviewed by Justin Michaud. This patch makes it so we include the top-level expression stack (m_parser->expressionStack()) among the values we consider live when figuring out which values need to be reloaded at a catch entrypoint. Previously, we only considered the enclosed expression stacks buried in the control entries for each inline parent, which only captures values live in enclosing blocks and not the current block being executed. * JSTests/wasm/stress/catch-should-keep-alive-inline-parent-expression-stack.js: Added. (async test): * Source/JavaScriptCore/wasm/WasmB3IRGenerator.cpp: (JSC::Wasm::B3IRGenerator::preparePatchpointForExceptions): (JSC::Wasm::B3IRGenerator::emitCatchImpl): Canonical link: https://commits.webkit.org/272448.849@safari-7618-branch Canonical link: https://commits.webkit.org/274313.279@webkitglib/2.44 Commit: 8e20e7adc44316af84e19e23261dfa9172b0cd2b https://github.com/WebKit/WebKit/commit/8e20e7adc44316af84e19e23261dfa9172b0cd2b Author: Rob Buis <rb...@igalia.com> Date: 2024-05-28 (Tue, 28 May 2024) Changed paths: A LayoutTests/fast/css/repeating-radial-gradient-small-range-large-extent-expected.txt A LayoutTests/fast/css/repeating-radial-gradient-small-range-large-extent.html M Source/WebCore/rendering/style/StyleGradientImage.cpp Log Message: ----------- Cherry-pick 274097.16@webkit-2024.2-embargoed (c2f3e54dfeed). https://bugs.webkit.org/show_bug.cgi?id=271904 ASAN_TRAP | WTF::Vector::expandCapacity; WTF::Vector::expandCapacity; WTF::Vector::appendSlowCase https://bugs.webkit.org/show_bug.cgi?id=271904 Reviewed by Antti Koivisto. For https://bugs.webkit.org/show_bug.cgi?id=264639 a fix was done to deal with repeating gradients where a tiny offset range was repeated, causing a large number of items to be added to the stop vector. That fix does not apply when the offset range is reasonable but the maxExtent is large. So, also take the maxExtent into account when deciding whether to produce extra gradient stops. * LayoutTests/fast/css/repeating-radial-gradient-small-range-large-extent-expected.txt: Added. * LayoutTests/fast/css/repeating-radial-gradient-small-range-large-extent.html: Added. * Source/WebCore/rendering/style/StyleGradientImage.cpp: (WebCore::StyleGradientImage::computeStops const): Canonical link: https://commits.webkit.org/274097.16@webkit-2024.2-embargoed Canonical link: https://commits.webkit.org/272448.888@safari-7618-branch Canonical link: https://commits.webkit.org/274313.280@webkitglib/2.44 Commit: 3dd3ae5e0d8e094c76ab9268a13797c4fef0b161 https://github.com/WebKit/WebKit/commit/3dd3ae5e0d8e094c76ab9268a13797c4fef0b161 Author: Nitin Mahendru <nitinmahen...@apple.com> Date: 2024-05-28 (Tue, 28 May 2024) Changed paths: M Source/WebCore/bindings/js/SerializedScriptValue.cpp M Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj A Tools/TestWebKitAPI/Tests/WebCore/SerializedScriptValue.cpp Log Message: ----------- Cherry-pick 272448.906@safari-7618-branch (cb2f03208aa6). https://bugs.webkit.org/show_bug.cgi?id=272491 Removing unbounded resize of Vector https://bugs.webkit.org/show_bug.cgi?id=272491 rdar://126132559 Reviewed by Alex Christensen. Resize the vector with an option to fallback to default value. Test Case has been added to verify the fix. * Source/WebCore/bindings/js/SerializedScriptValue.cpp: (WebCore::CloneDeserializer::readRTCCertificate): * Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj: * Tools/TestWebKitAPI/Tests/WebCore/SerializedScriptValue.cpp: Added. (TestWebKitAPI::TEST): Canonical link: https://commits.webkit.org/272448.906@safari-7618-branch Canonical link: https://commits.webkit.org/274313.281@webkitglib/2.44 Commit: f20814203a5ae26ec5f8349285f83d8d87cf7221 https://github.com/WebKit/WebKit/commit/f20814203a5ae26ec5f8349285f83d8d87cf7221 Author: Chris Dumez <cdu...@apple.com> Date: 2024-05-28 (Tue, 28 May 2024) Changed paths: M Source/WebCore/Modules/webaudio/AudioBuffer.cpp M Source/WebCore/Modules/webaudio/AudioBuffer.h M Source/WebCore/Modules/webaudio/AudioBufferSourceNode.cpp M Source/WebCore/Modules/webaudio/AudioBufferSourceNode.h Log Message: ----------- Cherry-pick 272448.925@safari-7618-branch (4201e96638f0). https://bugs.webkit.org/show_bug.cgi?id=272607 [WebAudio] Use-after-free in WebCore::AudioBufferSourceNode::renderFromBuffer https://bugs.webkit.org/show_bug.cgi?id=272607 rdar://126326144 Reviewed by Yusuke Suzuki. The JS on the main thread can detach the AudioBuffer's channels while it is being read by the audio rendering thread, causing use-after-frees. In a previous fix attempt, we starting copying the AudioBuffer's channels so that the audio thread would read a copy instead. However, the increased memory usage resulted in increased jetsams on gaming sites. As a temporary stop gap measure, this patch simply marks the AudioBuffer's channels as non-detachable to prevent the issue. This is not quite spec compliant but it addresses the security issue until we can implement the specification correctly without causing jetsams. * Source/WebCore/Modules/webaudio/AudioBuffer.cpp: (WebCore::AudioBuffer::markBuffersAsNonDetachable): * Source/WebCore/Modules/webaudio/AudioBuffer.h: * Source/WebCore/Modules/webaudio/AudioBufferSourceNode.cpp: (WebCore::AudioBufferSourceNode::acquireBufferContent): (WebCore::AudioBufferSourceNode::setBufferForBindings): (WebCore::AudioBufferSourceNode::startPlaying): * Source/WebCore/Modules/webaudio/AudioBufferSourceNode.h: Canonical link: https://commits.webkit.org/272448.925@safari-7618-branch Canonical link: https://commits.webkit.org/274313.282@webkitglib/2.44 Commit: 0badc7896b26c6dec585a09751c15a307d8fa3c9 https://github.com/WebKit/WebKit/commit/0badc7896b26c6dec585a09751c15a307d8fa3c9 Author: Vitor Roriz <vitor.ro...@apple.com> Date: 2024-05-28 (Tue, 28 May 2024) Changed paths: A LayoutTests/fast/css3-text/css3-text-wrap/text-wrap-balance-empty-range-crash-expected.html A LayoutTests/fast/css3-text/css3-text-wrap/text-wrap-balance-empty-range-crash.html M Source/WebCore/layout/formattingContexts/inline/InlineContentBalancer.cpp Log Message: ----------- Cherry-pick 272448.926@safari-7618-branch (a76aaa768a18). rdar://126011869 Guard balanceRangeWithLineRequirement against empty/invalid ranges rdar://126011869 Reviewed by Brent Fulgham. InlineItemRange is used for calculating the number of line break opportunities (NLBO), We always insert at least 1 dummy item to the Vector tracking line break opportunities for algorithm purposes, so NLBO is never zero. However, when initializing SlidingWidth, balanceRangeWithLineRequirement starts counting line break opportunities from startIndex = 1, assuming that the received range had at least 1 item. We should consider that an empty or invalid range can be received and guard against it. * LayoutTests/fast/css3-text/css3-text-wrap/text-wrap-balance-empty-range-crash-expected.html: Added. * LayoutTests/fast/css3-text/css3-text-wrap/text-wrap-balance-empty-range-crash.html: Added. * Source/WebCore/layout/formattingContexts/inline/InlineContentBalancer.cpp: (WebCore::Layout::InlineContentBalancer::computeBalanceConstraints): (WebCore::Layout::InlineContentBalancer::balanceRangeWithLineRequirement): (WebCore::Layout::InlineContentBalancer::balanceRangeWithNoLineRequirement): Canonical link: https://commits.webkit.org/272448.926@safari-7618-branch Canonical link: https://commits.webkit.org/274313.283@webkitglib/2.44 Commit: 5ca7c9873a9ec6f245d61538ca1cd29214c909c3 https://github.com/WebKit/WebKit/commit/5ca7c9873a9ec6f245d61538ca1cd29214c909c3 Author: Yijia Huang <yijia_hu...@apple.com> Date: 2024-05-28 (Tue, 28 May 2024) Changed paths: A JSTests/wasm/stress/try-and-block-with-v128-results.js A JSTests/wasm/stress/try-and-block-with-v128-results.wasm M Source/JavaScriptCore/wasm/WasmB3IRGenerator.cpp M Source/JavaScriptCore/wasm/WasmBBQJIT.cpp M Source/JavaScriptCore/wasm/WasmBBQJIT.h M Source/JavaScriptCore/wasm/WasmConstExprGenerator.cpp M Source/JavaScriptCore/wasm/WasmFunctionParser.h M Source/JavaScriptCore/wasm/WasmIPIntGenerator.cpp M Source/JavaScriptCore/wasm/WasmLLIntGenerator.cpp M Source/JavaScriptCore/wasm/WasmTypeDefinition.h Log Message: ----------- Cherry-pick 272448.873@safari-7618-branch (e6123d8a8215). https://bugs.webkit.org/show_bug.cgi?id=271494 [WASM] Block with v128 results should notify SIMD uses https://bugs.webkit.org/show_bug.cgi?id=271494 rdar://125146449 Reviewed by Justin Michaud. We should notify the SIMD use when wasm block within the code has v128 results. * JSTests/wasm/stress/try-and-block-with-v128-results.js: Added. (globalThis.callerIsBBQOrOMGCompiled.instantiateJsc): (else.instantiateBrowser): (async let): * JSTests/wasm/stress/try-and-block-with-v128-results.wasm: Added. Canonical link: https://commits.webkit.org/272448.873@safari-7618-branch Canonical link: https://commits.webkit.org/274313.284@webkitglib/2.44 Compare: https://github.com/WebKit/WebKit/compare/6f733fdfb8d2...5ca7c9873a9e To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications _______________________________________________ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes