Medium CVSS 8.8 webkit Other 🔧 Commit mapped

Overview

Medium
Severity
8.8
CVSS
No
Exploited ITW
Fixed
Fix Status
DescriptionProcessing maliciously crafted web content may lead to memory corruption
ComponentThirdParty ANGLE
Bug ClassOther
Tracker293895
Fix commitbcb47de34ff7 (WebKit/WebKit) +9940/-2446
CWECWE-119 (Buffer bounds error)
CVSS vectorCVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H
CISA KEVNot listed
CreditedIgnacio Sanmillan (@ulexec)
Disclosed2025-09-15

Background

ANGLE
The Almost Native Graphics Layer Engine, the library WebKit uses to implement WebGL by translating GL ES calls/shaders to the platform backend (Metal, Vulkan, D3D).
Dependency roll
A wholesale update of a bundled third-party component to a newer upstream revision, which mixes many unrelated changes so an individual security fix is hard to isolate.
Shader translator (MSL/SPIR-V)
The ANGLE compiler stage that converts GLSL ES into Metal Shading Language or SPIR-V; bugs here can produce miscompiled shaders with unsafe behavior.
gl_PerVertex
The built-in interface block carrying gl_Position/gl_PointSize/gl_ClipDistance/gl_CullDistance between shader stages; its members require special built-in qualifier handling.
Contents observer
ANGLE’s mechanism by which VertexArray/Texture objects are notified when a bound Buffer’s contents change, so dirty state is tracked; stale observer pointers are a UAF risk.
GPU process
The sandboxed WebKit process that hosts WebGL/ANGLE on modern macOS/iOS, isolating GPU work from WebContent.

Root Cause Analysis

This commit is a bulk roll of the bundled ANGLE dependency (Source/ThirdParty/ANGLE/*): angle_commit.h, DEPS, changes.diff and dozens of autogenerated tables are bumped wholesale, and the shown source diff is a mixture of many unrelated upstream changes rather than one isolated security patch. Because the security-relevant change is imported as part of a large dependency update, it is NOT cleanly isolable from the diff, and I will not claim a single definitive corruption mechanism; the following are the security-plausible candidates, explicitly marked as inference.

  1. Shader-translator correctness in the Metal backend: EmitMetal.cpp/ProgramPrelude.cpp replace the shared ANGLE_iadd/ANGLE_isub helpers (which were wrongly used for both EOpAdd/EOpSub and their compound-assign forms) with distinct value-returning add/sub and in-place addAssign/subAssign helpers plus dedicated pre/post increment/decrement helpers, all doing arithmetic through unsigned types to avoid signed-integer overflow UB; miscompiling a compound assignment as a by-value expression could corrupt generated MSL and thus GPU-side behavior for crafted WebGL shaders.
  2. gl_PerVertex handling: ParseContext.cpp now applies the proper built-in qualifiers (EvqPosition/EvqPointSize/EvqClipDistance/EvqCullDistance) to per-vertex members and tags the block EvqPerVertexIn/Out, CollectVariables.cpp skips per-vertex in/out from variable collection, and TranslatorSPIRV.cpp assigns the reserved input/output PerVertex SPIR-V IDs — mishandling built-in redeclaration is a classic shader-compiler memory-safety area.
  3. Reserved-name hardening: Context.cpp now returns -1 from getAttribLocation/getUniformLocation when the name starts with a reserved (gl_) prefix.
  4. Buffer contents-observer refactor: Buffer::onContentsChange now takes a Context*, asserts that only texture contents-observers remain, and notifies the context of the buffer binding mask, while State.cpp delegates element-array binding to VertexArray::bindElementBuffer — this is the observer/dirty-tracking machinery that has historically been a source of use-after-free/stale-pointer bugs between Buffer, VertexArray and Texture.
  5. Depth clamping: Context::clearBufferfv/clearBufferfi now clamp01 the depth value. The violated invariant and precise fix therefore cannot be pinned from this diff alone; the honest conclusion is that a specific ANGLE-upstream fix (most plausibly in the shader translator or the buffer/vertex-array observer path) rode in with the roll and the surrounding table/enum churn is noise.
Key insight
This is a bulk ANGLE dependency roll, not a surgical patch: no single memory-corruption mechanism is isolable from the diff, and the security-relevant fix (most plausibly a shader-translator correctness bug or a Buffer/VertexArray contents-observer lifetime bug) is buried among large autogenerated enum/table churn.

Attack Path

  1. Serve malicious WebGL/WebGL2 content Get a victim to load a page that creates a WebGL context; ANGLE is the GL implementation backing WebGL in WebKit (GPU process on macOS/iOS).
  2. Feed crafted shaders or GL state Submit GLSL that exercises the changed translator paths — signed-integer compound assignments / increment-decrement (Metal backend) or gl_PerVertex built-in redeclaration (SPIR-V/Metal) — or drive the buffer/vertex-array binding and contents-change paths that were refactored.
  3. Reach the vulnerable ANGLE code Inference: the crafted input drives either a miscompiled shader (bad generated MSL/SPIR-V) or a stale observer/dirty-state interaction in Buffer/VertexArray/Texture.
  4. Induce memory corruption Inference: depending on the true root cause this yields either GPU-side out-of-bounds behavior from a miscompiled shader or a use-after-free/stale-pointer in the ANGLE object graph; the exact primitive is not determinable from this bulk-roll diff.
  5. Escalate within the GPU process Standard exploitation background: groom the GPU-process heap and convert the corruption toward arbitrary R/W and code execution inside the sandboxed GPU process, then chain a separate escape.

Impact Assessment

Because the fix is delivered inside a bulk ANGLE roll, the strength of the primitive cannot be established from this diff with confidence; the CVE is rated medium with ‘memory corruption from crafted web content’. The most plausible reachable surface is WebGL shader compilation (Metal/SPIR-V translator) or the buffer/vertex-array/texture observer machinery, reached from crafted JS+GLSL. On modern WebKit ANGLE/WebGL runs in the sandboxed GPU process, so a resulting OOB or use-after-free would be confined there and would require a further sandbox escape for full compromise; escalation to code execution is conceivable but not demonstrable from this diff. This assessment is partly inference given the roll cannot be reduced to one mechanism.

Changed Functions

FunctionChangeNotes
GetOperatorString
Source/ThirdParty/ANGLE/src/compiler/translator/msl/EmitMetal.cpp
modified Splits EOpAdd/EOpSub from EOpAddAssign/EOpSubAssign and maps ++/-- for signed ints to dedicated ANGLE_*Int helpers, so compound assignment is no longer emitted via a by-value iadd/isub; MSL codegen correctness change (inference: security relevance is shader miscompilation).
ProgramPrelude helpers (addInt/addAssignInt/subInt/subAssignInt/pre|postIncrementInt/pre|postDecrementInt; removed iadd/isub)
Source/ThirdParty/ANGLE/src/compiler/translator/msl/ProgramPrelude.cpp
modified Replaces the two shared overflow-avoidance helpers with distinct value and in-place (thread T&) variants performing unsigned arithmetic to avoid signed-integer overflow UB; visitOperator wires each operator to the correct helper.
TParseContext::declareVariable / addInterfaceBlock
Source/ThirdParty/ANGLE/src/compiler/translator/ParseContext.cpp
modified Sets needsReservedCheck only for user-defined redeclarations, applies EvqPosition/EvqPointSize/EvqClipDistance/EvqCullDistance to gl_PerVertex members, and tags the block EvqPerVertexIn/Out.
CollectVariablesTraverser::visitDeclaration
Source/ThirdParty/ANGLE/src/compiler/translator/CollectVariables.cpp
modified Adds EvqPerVertexIn/EvqPerVertexOut cases that skip collection so per-vertex blocks are not treated as ordinary varyings.
TranslatorSPIRV::assignSpirvIds
Source/ThirdParty/ANGLE/src/compiler/translator/spirv/TranslatorSPIRV.cpp
modified Assigns reserved input/output PerVertex SPIR-V IDs for EvqPerVertexIn/Out blocks instead of treating them as generic varyings.
Buffer::onContentsChange / onDataChanged / bufferDataImpl / bufferSubData / copyBufferSubData
Source/ThirdParty/ANGLE/src/libANGLE/Buffer.cpp
modified onContentsChange/onDataChanged now take a Context*; onContentsChange asserts only texture contents-observers remain and notifies the context of the buffer binding mask (observer/dirty-tracking refactor).
State::setGenericBufferBinding<ElementArray>
Source/ThirdParty/ANGLE/src/libANGLE/State.cpp
modified Replaces inline observer/ref bookkeeping with a single VertexArray::bindElementBuffer(context, buffer) call, centralizing element-array-buffer binding.
Context::getAttribLocation / getUniformLocation
Source/ThirdParty/ANGLE/src/libANGLE/Context.cpp
modified Early-return -1 when the queried name starts with a reserved (gl_) prefix; also clearBufferfv/clearBufferfi now clamp01 the depth value and generateSupportedExtensions/error bookkeeping adjusted.
MakeStaticString
Source/ThirdParty/ANGLE/src/common/angleutils.cpp
added Interns strings in a leaked static std::set so returned const char* stay valid for process lifetime.
GLenumToString / PackedGLEnums (FromGLenum/ToGLenum QueryType) / g_stringEnumTable
Source/ThirdParty/ANGLE/src/common/gl_enum_utils_autogen.cpp, Source/ThirdParty/ANGLE/src/common/PackedGLEnums_autogen.cpp
modified Autogenerated enum/name-table churn (adds many enums, removes CommandsCompleted/GL_LINEAR_MIPMAP_LINEAR entries); table noise from the roll, no direct security mechanism.

Files Changed

  • Source/ThirdParty/ANGLE/.gn
  • Source/ThirdParty/ANGLE/ANGLE.plist
  • Source/ThirdParty/ANGLE/CONTRIBUTORS
  • Source/ThirdParty/ANGLE/DEPS
  • Source/ThirdParty/ANGLE/GLESv2.cmake
  • Source/ThirdParty/ANGLE/WATCHLISTS
  • Source/ThirdParty/ANGLE/WebKit/ANGLEShaderProgramVersion.h
  • Source/ThirdParty/ANGLE/WebKit/angle_commit.h
  • Source/ThirdParty/ANGLE/changes.diff
  • Source/ThirdParty/ANGLE/doc/ExtensionSupport.md
  • Source/ThirdParty/ANGLE/extensions/EGL_ANGLE_device_webgpu.txt
  • Source/ThirdParty/ANGLE/extensions/EGL_ANGLE_platform_angle_webgpu.txt
  • Source/ThirdParty/ANGLE/extensions/EGL_ANGLE_webgpu_texture_client_buffer.txt
  • Source/ThirdParty/ANGLE/gni/angle.gni
  • Source/ThirdParty/ANGLE/include/EGL/eglext_angle.h
  • Source/ThirdParty/ANGLE/include/GLES2/gl2ext.h
  • Source/ThirdParty/ANGLE/include/GLES2/gl2ext_angle.h
  • Source/ThirdParty/ANGLE/include/export.h
  • Source/ThirdParty/ANGLE/include/platform/Feature.h
  • Source/ThirdParty/ANGLE/include/platform/autogen/FeaturesVk_autogen.h
  • Source/ThirdParty/ANGLE/include/platform/autogen/FeaturesWgpu_autogen.h
  • Source/ThirdParty/ANGLE/include/platform/gen_features.py
  • Source/ThirdParty/ANGLE/include/platform/vk_features.json
  • Source/ThirdParty/ANGLE/include/platform/wgpu_features.json
  • Source/ThirdParty/ANGLE/scripts/code_generation_hashes/Extension_files.json
  • Source/ThirdParty/ANGLE/scripts/code_generation_hashes/GL_CTS_(dEQP)_build_files.json
  • Source/ThirdParty/ANGLE/scripts/code_generation_hashes/GL_EGL_WGL_loader.json
  • Source/ThirdParty/ANGLE/scripts/code_generation_hashes/GL_EGL_entry_points.json
  • Source/ThirdParty/ANGLE/scripts/code_generation_hashes/GLenum_value_to_string_map.json
  • Source/ThirdParty/ANGLE/scripts/code_generation_hashes/OpenGL_dispatch_table.json
  • Source/ThirdParty/ANGLE/scripts/code_generation_hashes/SPIR-V_helpers.json
  • Source/ThirdParty/ANGLE/scripts/code_generation_hashes/WebGPU_format.json
  • Source/ThirdParty/ANGLE/scripts/code_generation_hashes/interpreter_utils.json
  • Source/ThirdParty/ANGLE/scripts/code_generation_hashes/packed_enum.json
  • Source/ThirdParty/ANGLE/scripts/code_generation_hashes/proc_table.json
  • Source/ThirdParty/ANGLE/scripts/code_generation_hashes/restricted_traces.json
  • Source/ThirdParty/ANGLE/scripts/generate_entry_points.py
  • Source/ThirdParty/ANGLE/scripts/registry_xml.py
  • Source/ThirdParty/ANGLE/scripts/roll_aosp.sh
  • Source/ThirdParty/ANGLE/src/android_system_settings/res/layout/fragment.xml
  • Source/ThirdParty/ANGLE/src/android_system_settings/src/com/android/angle/AndroidManifest.xml
  • Source/ThirdParty/ANGLE/src/android_system_settings/src/com/android/angle/MainActivity.java
  • Source/ThirdParty/ANGLE/src/android_system_settings/src/com/android/angle/common/MainFragment.java
  • Source/ThirdParty/ANGLE/src/common/PackedGLEnums_autogen.cpp
  • Source/ThirdParty/ANGLE/src/common/PackedGLEnums_autogen.h
  • Source/ThirdParty/ANGLE/src/common/angleutils.cpp
  • Source/ThirdParty/ANGLE/src/common/angleutils.h
  • Source/ThirdParty/ANGLE/src/common/gl_enum_utils_autogen.cpp
  • Source/ThirdParty/ANGLE/src/common/packed_gl_enums.json
  • Source/ThirdParty/ANGLE/src/common/system_utils.h
  • Source/ThirdParty/ANGLE/src/common/utilities.cpp
  • Source/ThirdParty/ANGLE/src/compiler/translator/CollectVariables.cpp
  • Source/ThirdParty/ANGLE/src/compiler/translator/ParseContext.cpp
  • Source/ThirdParty/ANGLE/src/compiler/translator/Types.h
  • Source/ThirdParty/ANGLE/src/compiler/translator/msl/EmitMetal.cpp
  • Source/ThirdParty/ANGLE/src/compiler/translator/msl/ProgramPrelude.cpp
  • Source/ThirdParty/ANGLE/src/compiler/translator/spirv/TranslatorSPIRV.cpp
  • Source/ThirdParty/ANGLE/src/gpu_info_util/SystemInfo.h
  • Source/ThirdParty/ANGLE/src/libANGLE/Buffer.cpp
  • Source/ThirdParty/ANGLE/src/libANGLE/Buffer.h
  • Source/ThirdParty/ANGLE/src/libANGLE/Caps.cpp
  • Source/ThirdParty/ANGLE/src/libANGLE/Caps.h
  • Source/ThirdParty/ANGLE/src/libANGLE/Context.cpp
  • Source/ThirdParty/ANGLE/src/libANGLE/Context.h
  • Source/ThirdParty/ANGLE/src/libANGLE/Context.inl.h
  • Source/ThirdParty/ANGLE/src/libANGLE/Context_gles_ext_autogen.h
  • Source/ThirdParty/ANGLE/src/libANGLE/ErrorStrings.h
  • Source/ThirdParty/ANGLE/src/libANGLE/Framebuffer.cpp
  • Source/ThirdParty/ANGLE/src/libANGLE/State.cpp
  • Source/ThirdParty/ANGLE/src/libANGLE/Surface.cpp
  • Source/ThirdParty/ANGLE/src/libANGLE/Texture.cpp
  • Source/ThirdParty/ANGLE/src/libANGLE/Texture.h
  • Source/ThirdParty/ANGLE/src/libANGLE/TransformFeedback.cpp
  • Source/ThirdParty/ANGLE/src/libANGLE/VertexArray.cpp
  • Source/ThirdParty/ANGLE/src/libANGLE/VertexArray.h
  • Source/ThirdParty/ANGLE/src/libANGLE/VertexArray_unittest.cpp
  • Source/ThirdParty/ANGLE/src/libANGLE/angletypes.h
  • Source/ThirdParty/ANGLE/src/libANGLE/capture/capture_gles_ext_autogen.cpp
  • Source/ThirdParty/ANGLE/src/libANGLE/capture/capture_gles_ext_autogen.h
  • Source/ThirdParty/ANGLE/src/libANGLE/capture/capture_gles_ext_params.cpp
  • Source/ThirdParty/ANGLE/src/libANGLE/gles_extensions_autogen.cpp
  • Source/ThirdParty/ANGLE/src/libANGLE/gles_extensions_autogen.h
  • Source/ThirdParty/ANGLE/src/libANGLE/queryutils.cpp
  • Source/ThirdParty/ANGLE/src/libANGLE/renderer/SurfaceImpl.cpp
  • Source/ThirdParty/ANGLE/src/libANGLE/renderer/SurfaceImpl.h
  • Source/ThirdParty/ANGLE/src/libANGLE/renderer/VertexArrayImpl.h
  • Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/SurfaceD3D.cpp
  • Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/SurfaceD3D.h
  • Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/Query11.cpp
  • Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/renderer11_utils.cpp
  • Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d9/Query9.cpp
  • Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d9/renderer9_utils.cpp
  • Source/ThirdParty/ANGLE/src/libANGLE/renderer/driver_utils.h
  • Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/ContextGL.cpp
  • Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/DispatchTableGL_autogen.cpp
  • Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/DispatchTableGL_autogen.h
  • Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/QueryGL.cpp
  • Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/QueryGL.h
  • Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/functionsgl_typedefs.h
  • Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/gl_bindings_data.json
  • Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/null_functions.cpp
  • Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/null_functions.h
  • Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/renderergl_utils.cpp
  • Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/renderergl_utils.h
  • Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/wgl/D3DTextureSurfaceWGL.cpp
  • Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/wgl/D3DTextureSurfaceWGL.h
  • Source/ThirdParty/ANGLE/src/libANGLE/renderer/metal/ProvokingVertexHelper.mm
  • Source/ThirdParty/ANGLE/src/libANGLE/renderer/metal/VertexArrayMtl.mm
  • Source/ThirdParty/ANGLE/src/libANGLE/renderer/metal/mtl_command_buffer.h
  • Source/ThirdParty/ANGLE/src/libANGLE/renderer/metal/mtl_command_buffer.mm
  • Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/ContextVk.cpp
  • Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/ContextVk.h
  • Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/ProgramExecutableVk.cpp
  • Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/ProgramExecutableVk.h
  • Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/SurfaceVk.cpp
  • Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/TextureVk.cpp
  • Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/UtilsVk.cpp
  • Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/VertexArrayVk.cpp
  • Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/spv_utils.cpp
  • Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/spv_utils.h
  • Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/vk_caps_utils.cpp
  • Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/vk_format_utils.cpp
  • Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/vk_helpers.cpp
  • Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/vk_helpers.h
  • Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/vk_renderer.cpp
  • Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/vk_renderer.h
  • Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/vk_utils.cpp
  • Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/vk_utils.h
  • Source/ThirdParty/ANGLE/src/libANGLE/renderer/wgpu/BUILD.gn
  • Source/ThirdParty/ANGLE/src/libANGLE/renderer/wgpu/BufferWgpu.cpp
  • Source/ThirdParty/ANGLE/src/libANGLE/renderer/wgpu/ContextWgpu.cpp
  • Source/ThirdParty/ANGLE/src/libANGLE/renderer/wgpu/ContextWgpu.h
  • Source/ThirdParty/ANGLE/src/libANGLE/renderer/wgpu/DeviceWgpu.cpp
  • Source/ThirdParty/ANGLE/src/libANGLE/renderer/wgpu/DisplayWgpu.cpp
  • Source/ThirdParty/ANGLE/src/libANGLE/renderer/wgpu/DisplayWgpu.h
  • Source/ThirdParty/ANGLE/src/libANGLE/renderer/wgpu/ImageWgpu.cpp
  • Source/ThirdParty/ANGLE/src/libANGLE/renderer/wgpu/ImageWgpu.h
  • Source/ThirdParty/ANGLE/src/libANGLE/renderer/wgpu/ProgramExecutableWgpu.cpp
  • Source/ThirdParty/ANGLE/src/libANGLE/renderer/wgpu/ProgramWgpu.cpp
  • Source/ThirdParty/ANGLE/src/libANGLE/renderer/wgpu/RenderbufferWgpu.cpp
  • Source/ThirdParty/ANGLE/src/libANGLE/renderer/wgpu/RenderbufferWgpu.h
  • Source/ThirdParty/ANGLE/src/libANGLE/renderer/wgpu/SurfaceWgpu.cpp
  • Source/ThirdParty/ANGLE/src/libANGLE/renderer/wgpu/SurfaceWgpu.h
  • Source/ThirdParty/ANGLE/src/libANGLE/renderer/wgpu/TextureWgpu.cpp
  • Source/ThirdParty/ANGLE/src/libANGLE/renderer/wgpu/TextureWgpu.h
  • Source/ThirdParty/ANGLE/src/libANGLE/renderer/wgpu/VertexArrayWgpu.cpp
  • Source/ThirdParty/ANGLE/src/libANGLE/renderer/wgpu/linux/x11/WindowSurfaceWgpuX11.cpp
  • Source/ThirdParty/ANGLE/src/libANGLE/renderer/wgpu/mac/WindowSurfaceWgpuMetalLayer.mm
  • Source/ThirdParty/ANGLE/src/libANGLE/renderer/wgpu/wgpu_command_buffer.cpp
  • Source/ThirdParty/ANGLE/src/libANGLE/renderer/wgpu/wgpu_command_buffer.h
  • Source/ThirdParty/ANGLE/src/libANGLE/renderer/wgpu/wgpu_format_map.json
  • Source/ThirdParty/ANGLE/src/libANGLE/renderer/wgpu/wgpu_format_table_autogen.cpp
  • Source/ThirdParty/ANGLE/src/libANGLE/renderer/wgpu/wgpu_format_utils.cpp
  • Source/ThirdParty/ANGLE/src/libANGLE/renderer/wgpu/wgpu_format_utils.h
  • Source/ThirdParty/ANGLE/src/libANGLE/renderer/wgpu/wgpu_helpers.cpp
  • Source/ThirdParty/ANGLE/src/libANGLE/renderer/wgpu/wgpu_helpers.h
  • Source/ThirdParty/ANGLE/src/libANGLE/renderer/wgpu/wgpu_pipeline_state.cpp
  • Source/ThirdParty/ANGLE/src/libANGLE/renderer/wgpu/wgpu_proc_utils.cpp
  • Source/ThirdParty/ANGLE/src/libANGLE/renderer/wgpu/wgpu_proc_utils.h
  • Source/ThirdParty/ANGLE/src/libANGLE/renderer/wgpu/wgpu_sources.gni
  • Source/ThirdParty/ANGLE/src/libANGLE/renderer/wgpu/wgpu_utils.cpp
  • Source/ThirdParty/ANGLE/src/libANGLE/renderer/wgpu/wgpu_utils.h
  • Source/ThirdParty/ANGLE/src/libANGLE/renderer/wgpu/win32/WindowSurfaceWgpuWin32.cpp
  • Source/ThirdParty/ANGLE/src/libANGLE/validationEGL.cpp
  • Source/ThirdParty/ANGLE/src/libANGLE/validationES.cpp
  • Source/ThirdParty/ANGLE/src/libANGLE/validationES2.cpp
  • Source/ThirdParty/ANGLE/src/libANGLE/validationES3.cpp
  • Source/ThirdParty/ANGLE/src/libANGLE/validationES31.cpp
  • Source/ThirdParty/ANGLE/src/libANGLE/validationES31.h
  • Source/ThirdParty/ANGLE/src/libANGLE/validationESEXT.cpp
  • Source/ThirdParty/ANGLE/src/libANGLE/validationESEXT_autogen.h
  • Source/ThirdParty/ANGLE/src/libGLESv2.gni
  • Source/ThirdParty/ANGLE/src/libGLESv2/entry_points_gles_1_0_autogen.cpp
  • Source/ThirdParty/ANGLE/src/libGLESv2/entry_points_gles_2_0_autogen.cpp
  • Source/ThirdParty/ANGLE/src/libGLESv2/entry_points_gles_3_0_autogen.cpp
  • Source/ThirdParty/ANGLE/src/libGLESv2/entry_points_gles_3_1_autogen.cpp
  • Source/ThirdParty/ANGLE/src/libGLESv2/entry_points_gles_3_2_autogen.cpp
  • Source/ThirdParty/ANGLE/src/libGLESv2/entry_points_gles_ext_autogen.cpp
  • Source/ThirdParty/ANGLE/src/libGLESv2/entry_points_gles_ext_autogen.h
  • Source/ThirdParty/ANGLE/src/libGLESv2/libGLESv2_autogen.cpp
  • Source/ThirdParty/ANGLE/src/libGLESv2/libGLESv2_autogen.def
  • Source/ThirdParty/ANGLE/src/libGLESv2/libGLESv2_no_capture_autogen.def
  • Source/ThirdParty/ANGLE/src/libGLESv2/libGLESv2_vulkan_secondaries_autogen.def
  • Source/ThirdParty/ANGLE/src/libGLESv2/libGLESv2_with_capture_autogen.def
  • Source/ThirdParty/ANGLE/src/tests/BUILD.gn
  • Source/ThirdParty/ANGLE/src/tests/angle_end2end_tests.gni
  • Source/ThirdParty/ANGLE/src/tests/angle_end2end_tests_expectations.txt
  • Source/ThirdParty/ANGLE/src/tests/compiler_tests/Parse_test.cpp
  • Source/ThirdParty/ANGLE/src/tests/deqp_support/deqp.gni
  • Source/ThirdParty/ANGLE/src/tests/gl_tests/ClearTest.cpp
  • Source/ThirdParty/ANGLE/src/tests/gl_tests/DrawBaseVertexBaseInstanceTest.cpp
  • Source/ThirdParty/ANGLE/src/tests/gl_tests/ErrorMessages.cpp
  • Source/ThirdParty/ANGLE/src/tests/gl_tests/GLSLTest.cpp
  • Source/ThirdParty/ANGLE/src/tests/gl_tests/GLSLUBTest.cpp
  • Source/ThirdParty/ANGLE/src/tests/gl_tests/ImageTest.cpp
  • Source/ThirdParty/ANGLE/src/tests/gl_tests/MipmapTest.cpp
  • Source/ThirdParty/ANGLE/src/tests/gl_tests/MultiDrawTest.cpp
  • Source/ThirdParty/ANGLE/src/tests/gl_tests/SyncQueriesTest.cpp
  • Source/ThirdParty/ANGLE/src/tests/gl_tests/TextureTest.cpp
  • Source/ThirdParty/ANGLE/src/tests/gl_tests/TransformFeedbackTest.cpp
  • Source/ThirdParty/ANGLE/src/tests/gl_tests/WebGLCompatibilityTest.cpp
  • Source/ThirdParty/ANGLE/src/tests/restricted_traces/restricted_trace_perf.py
  • Source/ThirdParty/ANGLE/src/tests/restricted_traces/restricted_traces.json
  • Source/ThirdParty/ANGLE/src/tests/test_utils/angle_test_instantiate.cpp
  • Source/ThirdParty/ANGLE/src/tests/test_utils/angle_test_platform.cpp
  • Source/ThirdParty/ANGLE/src/tests/test_utils/angle_test_platform.h
  • Source/ThirdParty/ANGLE/util/autogen/angle_features_autogen.cpp
  • Source/ThirdParty/ANGLE/util/autogen/angle_features_autogen.h
  • Source/ThirdParty/ANGLE/util/capture/frame_capture_replay_autogen.cpp

Audit Directions

  • Diff the ANGLE roll against upstream
    Recover the two ANGLE commit hashes from Source/ThirdParty/ANGLE/WebKit/angle_commit.h before/after and review only the upstream commits between them; grep the roll’s changes.diff for security-tagged commits to find the actual fix rather than the table noise.
  • Metal/SPIR-V translator arithmetic and built-ins
    Audit EmitMetal.cpp/ProgramPrelude.cpp for any remaining operator that still routes compound-assign through a by-value helper, and TranslatorSPIRV.cpp/ParseContext.cpp/CollectVariables.cpp for EvqPerVertexIn/Out handling; grep for ANGLE_iadd/ANGLE_isub, EOpAddAssign, isGLPerVertex, kIdInputPerVertexBlock.
  • Buffer/VertexArray/Texture contents-observer lifetimes
    In libANGLE trace onContentsChange/onDataChanged(Context*), addContentsObserver/removeContentsObserver, bindElementBuffer and mContentsObservers for stale-pointer/UAF risk; grep for kBufferTextureIndex and getBufferBindingMask across renderer backends listed in COVERAGE NOTES (VertexArrayVk/Mtl, TextureVk).
  • Reserved-name and clamp hardening as fix markers
    Treat the new nameStartsWithReservedPrefix guards in getAttribLocation/getUniformLocation and the clamp01 depth guards in clearBufferfv/clearBufferfi as hints to the intended bug class; grep the omitted validationES*.cpp files for missing reserved-prefix or range checks on the same entry points.

Original Bug Report

The reporter's bug is still restricted on the tracker.