Branch: refs/heads/webkitglib/2.54
  Home:   https://github.com/WebKit/WebKit
  Commit: 6ba9267c21f14d2dd567907718e9149e028f7558
      
https://github.com/WebKit/WebKit/commit/6ba9267c21f14d2dd567907718e9149e028f7558
  Author: Dan Hecht <[email protected]>
  Date:   2026-09-15 (Tue, 15 Sep 2026)

  Changed paths:
    M Source/bmalloc/libpas/src/libpas/pas_page_malloc.c

  Log Message:
  -----------
  Cherry-pick 316606.169@safari-7625-branch (970accdcb0d7). 
https://bugs.webkit.org/show_bug.cgi?id=319987

    [libpas] Use mmap zeroing rather than madvise when MTE is disabled
    https://bugs.webkit.org/show_bug.cgi?id=319987
    rdar://176518186

    Reviewed by Keith Miller.

    For now, let's use mmap for the large VA zeroing path rather than
    madvise. But when MTE is enabled, continue using madvise since the
    tag status is unknown.

    * Source/bmalloc/libpas/src/libpas/pas_page_malloc.c:
    (pas_page_malloc_zero_fill_latch_if_madv_zero_is_supported):

    Identifier: 316606.169@safari-7625-branch

Canonical link: https://commits.webkit.org/317695.321@webkitglib/2.54


  Commit: b52725a1714b6af2986f761c800c0a6c6013d1c6
      
https://github.com/WebKit/WebKit/commit/b52725a1714b6af2986f761c800c0a6c6013d1c6
  Author: Alan Baradlay <[email protected]>
  Date:   2026-09-15 (Tue, 15 Sep 2026)

  Changed paths:
    A LayoutTests/fast/canvas/canvas-layer-after-max-save-count-expected.txt
    A LayoutTests/fast/canvas/canvas-layer-after-max-save-count.html
    M Source/WebCore/html/canvas/CanvasRenderingContext2DBase.cpp

  Log Message:
  -----------
  Cherry-pick c5a2b165a95e. https://bugs.webkit.org/show_bug.cgi?id=318378

    Use-after-free in CanvasRenderingContext2DBase::beginLayer via 
realizeSavesLoop early exit
    https://bugs.webkit.org/show_bug.cgi?id=318378
    <rdar://175228541>

    Reviewed by Said Abou-Hallawa.

    beginLayer() relies on realizeSaves() pushing a fresh State onto
    m_stateStack so that the new layer's CanvasLayerContextSwitcher is stored
    in its own frame. If the state stack is already at MaxSaveCount,
    realizeSavesLoop() returns without growing the stack and
    m_unrealizedSaveCount remains nonzero. Creating a layer in that case
    would overwrite the targetSwitcher of the current top State, dropping the
    previous layer while the new layer still holds a raw pointer to the
    previous layer's GraphicsContext, leading to a use-after-free.

    Fix this by returning early from beginLayer() when realizeSaves() was
    unable to push a new State (m_unrealizedSaveCount is still nonzero).

    Test: fast/canvas/canvas-layer-after-max-save-count.html

    * LayoutTests/fast/canvas/canvas-layer-after-max-save-count-expected.txt: 
Added.
    * LayoutTests/fast/canvas/canvas-layer-after-max-save-count.html: Added.
    * Source/WebCore/html/canvas/CanvasRenderingContext2DBase.cpp:
    (WebCore::CanvasRenderingContext2DBase::beginLayer):

    Identifier: [email protected]

    Identifier: 316606.203@safari-7625-branch

Canonical link: https://commits.webkit.org/317695.322@webkitglib/2.54


  Commit: 3a8c958803ac37d2de7fbf5b2b3fac44ec8523fa
      
https://github.com/WebKit/WebKit/commit/3a8c958803ac37d2de7fbf5b2b3fac44ec8523fa
  Author: David Kilzer <[email protected]>
  Date:   2026-09-15 (Tue, 15 Sep 2026)

  Changed paths:
    M Source/WebCore/page/Page.cpp

  Log Message:
  -----------
  Cherry-pick 316606.223@safari-7625-branch (674ff0d01ca3). 
https://bugs.webkit.org/show_bug.cgi?id=320100

    WebCore::Page::forEachPage should iterate a snapshot of allPages()
    <https://bugs.webkit.org/show_bug.cgi?id=320100>
    <rdar://179997790>

    Reviewed by Chris Dumez.

    Iterate a snapshot of the global page registry so a callback that
    mutates the registry cannot invalidate the iterator.  `forEachPage`
    walked the live `allPages()` hash set while invoking an arbitrary
    caller callback per page.  A callback that synchronously creates or
    destroys a `Page` mutates `allPages()` (through the constructor's
    `add()` and the destructor's `remove()`), which can rehash the set and
    free the bucket array the iterator is still walking, leaving the loop
    dereferencing freed memory.

    Build a `Vector<Ref<Page>>` snapshot first, matching the existing
    pattern in `LocalDOMWindow::forEachWindowInterestedInStorageEvents`.
    Holding a `Ref` to each page for the loop's duration also extends the
    guarantee the previous per-element `Ref` temporary already gave the
    current page to every page in the snapshot.

    Also snapshot `allPages()` in the other methods that iterate it live
    and could re-enter through their per-page work:
    `clearPreviousItemFromAllPages`,
    `updateStyleForAllPagesAfterGlobalChangeInEnvironment`, and
    `updateControlTintsForAllPages`.  `networkStateChanged` and
    `refreshPlugins` already collect into a local container before acting,
    so they are left unchanged.

    * Source/WebCore/page/Page.cpp:
    (WebCore::Page::forEachPage):
    (WebCore::Page::clearPreviousItemFromAllPages):
    (WebCore::Page::updateStyleForAllPagesAfterGlobalChangeInEnvironment):
    (WebCore::Page::updateControlTintsForAllPages):

    Identifier: 316606.223@safari-7625-branch

Canonical link: https://commits.webkit.org/317695.323@webkitglib/2.54


  Commit: f7e2bdf51475248f6e204ded9c52a27cc5034b6e
      
https://github.com/WebKit/WebKit/commit/f7e2bdf51475248f6e204ded9c52a27cc5034b6e
  Author: Chris Dumez <[email protected]>
  Date:   2026-09-15 (Tue, 15 Sep 2026)

  Changed paths:
    M Source/WebCore/platform/audio/cocoa/CARingBuffer.h
    M Source/WebKit/UIProcess/SpeechRecognitionRemoteRealtimeMediaSource.cpp
    M Source/WebKit/UIProcess/SpeechRecognitionRemoteRealtimeMediaSource.h
    M 
Source/WebKit/UIProcess/SpeechRecognitionRemoteRealtimeMediaSourceManager.cpp

  Log Message:
  -----------
  Cherry-pick 316606.245@safari-7625-branch (1d7dfd5f55aa). 
https://bugs.webkit.org/show_bug.cgi?id=320175

    Validate numberOfFrames in 
SpeechRecognitionRemoteRealtimeMediaSourceManager::remoteAudioSamplesAvailable
    https://bugs.webkit.org/show_bug.cgi?id=320175
    rdar://183111028

    Reviewed by Jean-Yves Avenard.

    remoteAudioSamplesAvailable() received numberOfFrames from the (untrusted)
    WebContent process and used it to size an audio buffer in the UI process
    (via WebAudioBufferList::setSampleCount()), which only guards against
    arithmetic overflow, not against merely-large values. A compromised 
WebContent
    process could therefore trigger an unbounded allocation in the UI process.

    Validate the message: reject it unless the source's shared ring buffer has 
been
    mapped and numberOfFrames is non-zero and no larger than that buffer's 
capacity.
    The producing process had to actually allocate shared memory for that 
capacity,
    so this removes the amplification. Add CARingBuffer::frameCount() and
    SpeechRecognitionRemoteRealtimeMediaSource::audioBufferFrameCount() to 
expose
    the bound to the message receiver.

    * Source/WebCore/platform/audio/cocoa/CARingBuffer.h:
    (WebCore::CARingBuffer::frameCount const):
    * Source/WebKit/UIProcess/SpeechRecognitionRemoteRealtimeMediaSource.cpp:
    (WebKit::SpeechRecognitionRemoteRealtimeMediaSource::audioBufferFrameCount 
const):
    * Source/WebKit/UIProcess/SpeechRecognitionRemoteRealtimeMediaSource.h:
    * 
Source/WebKit/UIProcess/SpeechRecognitionRemoteRealtimeMediaSourceManager.cpp:
    
(WebKit::SpeechRecognitionRemoteRealtimeMediaSourceManager::remoteAudioSamplesAvailable):

    Identifier: 316606.245@safari-7625-branch

Canonical link: https://commits.webkit.org/317695.324@webkitglib/2.54


  Commit: a47c50d2e5800cfa63171998f10dbbb6ba5273ab
      
https://github.com/WebKit/WebKit/commit/a47c50d2e5800cfa63171998f10dbbb6ba5273ab
  Author: Keith Miller <[email protected]>
  Date:   2026-09-15 (Tue, 15 Sep 2026)

  Changed paths:
    M Source/JavaScriptCore/heap/Heap.cpp

  Log Message:
  -----------
  Cherry-pick 316606.250@safari-7625-branch (0c21be440adc). 
https://bugs.webkit.org/show_bug.cgi?id=320401

    finalizeWasmCalleeCleanup should run a cross-modifying code fence
    https://bugs.webkit.org/show_bug.cgi?id=320401
    rdar://183357733

    Reviewed by Marcus Plutowski.

    In theory it's possible for finalizeWasmCalleeCleanup to remove the last
    reference to a BBQCallee while it's still reachable from the current
    thread via a stale direct call. While I don't think this is practically
    possible we might as well fence so the requirement is documented.

    No new tests, theoretical bug.

    Identifier: 316606.250@safari-7625-branch

Canonical link: https://commits.webkit.org/317695.325@webkitglib/2.54


  Commit: 6cc49a9493278f9b59582505e60c8e3cf3178be7
      
https://github.com/WebKit/WebKit/commit/6cc49a9493278f9b59582505e60c8e3cf3178be7
  Author: Marcos Caceres <[email protected]>
  Date:   2026-09-15 (Tue, 15 Sep 2026)

  Changed paths:
    M Source/WebKit/UIProcess/Cocoa/UIDelegate.mm
    M Source/WebKit/UIProcess/ios/WKGeolocationProviderIOS.mm
    M Tools/TestWebKitAPI/Tests/WebKit/WKWebView/Geolocation.mm

  Log Message:
  -----------
  Cherry-pick 316606.259@safari-7625-branch (8f8dbbfd88ca). 
https://bugs.webkit.org/show_bug.cgi?id=306286

    Use requesting origin instead of active origin for Geolocation permission 
prompt

    <rdar://problem/183281228>
    https://bugs.webkit.org/show_bug.cgi?id=306286

    Reviewed by Chris Dumez.

    The Geolocation permission prompt derived the origin it displays from the 
page's active
    (provisional) navigation URL rather than from the request's origin, so a 
page could start a
    navigation to another origin and have the prompt attribute the request to 
that origin while
    the requesting document kept running. Use the request's top-level origin 
(frameInfo.topOrigin)
    for both the WKUIDelegate prompt and the built-in iOS provider prompt, 
matching the
    DeviceOrientation permission prompt.

    Identifier: 316606.259@safari-7625-branch

Canonical link: https://commits.webkit.org/317695.326@webkitglib/2.54


Compare: https://github.com/WebKit/WebKit/compare/ce7c6593ad44...6cc49a949327

To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications

Reply via email to