WebKit · ThirdParty ANGLE
CVE-2025-43419
Other in ThirdParty ANGLE
Overview
Medium
Severity
8.8
CVSS
No
Exploited ITW
Fixed
Fix Status
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.
- 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.
- 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.
- Reserved-name hardening: Context.cpp now returns -1 from getAttribLocation/getUniformLocation when the name starts with a reserved (gl_) prefix.
- 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.
- 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
- 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).
- 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.
- 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.
- 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.
- 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
| Function | Change | Notes |
|---|---|---|
GetOperatorStringSource/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 / addInterfaceBlockSource/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::visitDeclarationSource/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::assignSpirvIdsSource/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 / copyBufferSubDataSource/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 / getUniformLocationSource/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. |
MakeStaticStringSource/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_stringEnumTableSource/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/.gnSource/ThirdParty/ANGLE/ANGLE.plistSource/ThirdParty/ANGLE/CONTRIBUTORSSource/ThirdParty/ANGLE/DEPSSource/ThirdParty/ANGLE/GLESv2.cmakeSource/ThirdParty/ANGLE/WATCHLISTSSource/ThirdParty/ANGLE/WebKit/ANGLEShaderProgramVersion.hSource/ThirdParty/ANGLE/WebKit/angle_commit.hSource/ThirdParty/ANGLE/changes.diffSource/ThirdParty/ANGLE/doc/ExtensionSupport.mdSource/ThirdParty/ANGLE/extensions/EGL_ANGLE_device_webgpu.txtSource/ThirdParty/ANGLE/extensions/EGL_ANGLE_platform_angle_webgpu.txtSource/ThirdParty/ANGLE/extensions/EGL_ANGLE_webgpu_texture_client_buffer.txtSource/ThirdParty/ANGLE/gni/angle.gniSource/ThirdParty/ANGLE/include/EGL/eglext_angle.hSource/ThirdParty/ANGLE/include/GLES2/gl2ext.hSource/ThirdParty/ANGLE/include/GLES2/gl2ext_angle.hSource/ThirdParty/ANGLE/include/export.hSource/ThirdParty/ANGLE/include/platform/Feature.hSource/ThirdParty/ANGLE/include/platform/autogen/FeaturesVk_autogen.hSource/ThirdParty/ANGLE/include/platform/autogen/FeaturesWgpu_autogen.hSource/ThirdParty/ANGLE/include/platform/gen_features.pySource/ThirdParty/ANGLE/include/platform/vk_features.jsonSource/ThirdParty/ANGLE/include/platform/wgpu_features.jsonSource/ThirdParty/ANGLE/scripts/code_generation_hashes/Extension_files.jsonSource/ThirdParty/ANGLE/scripts/code_generation_hashes/GL_CTS_(dEQP)_build_files.jsonSource/ThirdParty/ANGLE/scripts/code_generation_hashes/GL_EGL_WGL_loader.jsonSource/ThirdParty/ANGLE/scripts/code_generation_hashes/GL_EGL_entry_points.jsonSource/ThirdParty/ANGLE/scripts/code_generation_hashes/GLenum_value_to_string_map.jsonSource/ThirdParty/ANGLE/scripts/code_generation_hashes/OpenGL_dispatch_table.jsonSource/ThirdParty/ANGLE/scripts/code_generation_hashes/SPIR-V_helpers.jsonSource/ThirdParty/ANGLE/scripts/code_generation_hashes/WebGPU_format.jsonSource/ThirdParty/ANGLE/scripts/code_generation_hashes/interpreter_utils.jsonSource/ThirdParty/ANGLE/scripts/code_generation_hashes/packed_enum.jsonSource/ThirdParty/ANGLE/scripts/code_generation_hashes/proc_table.jsonSource/ThirdParty/ANGLE/scripts/code_generation_hashes/restricted_traces.jsonSource/ThirdParty/ANGLE/scripts/generate_entry_points.pySource/ThirdParty/ANGLE/scripts/registry_xml.pySource/ThirdParty/ANGLE/scripts/roll_aosp.shSource/ThirdParty/ANGLE/src/android_system_settings/res/layout/fragment.xmlSource/ThirdParty/ANGLE/src/android_system_settings/src/com/android/angle/AndroidManifest.xmlSource/ThirdParty/ANGLE/src/android_system_settings/src/com/android/angle/MainActivity.javaSource/ThirdParty/ANGLE/src/android_system_settings/src/com/android/angle/common/MainFragment.javaSource/ThirdParty/ANGLE/src/common/PackedGLEnums_autogen.cppSource/ThirdParty/ANGLE/src/common/PackedGLEnums_autogen.hSource/ThirdParty/ANGLE/src/common/angleutils.cppSource/ThirdParty/ANGLE/src/common/angleutils.hSource/ThirdParty/ANGLE/src/common/gl_enum_utils_autogen.cppSource/ThirdParty/ANGLE/src/common/packed_gl_enums.jsonSource/ThirdParty/ANGLE/src/common/system_utils.hSource/ThirdParty/ANGLE/src/common/utilities.cppSource/ThirdParty/ANGLE/src/compiler/translator/CollectVariables.cppSource/ThirdParty/ANGLE/src/compiler/translator/ParseContext.cppSource/ThirdParty/ANGLE/src/compiler/translator/Types.hSource/ThirdParty/ANGLE/src/compiler/translator/msl/EmitMetal.cppSource/ThirdParty/ANGLE/src/compiler/translator/msl/ProgramPrelude.cppSource/ThirdParty/ANGLE/src/compiler/translator/spirv/TranslatorSPIRV.cppSource/ThirdParty/ANGLE/src/gpu_info_util/SystemInfo.hSource/ThirdParty/ANGLE/src/libANGLE/Buffer.cppSource/ThirdParty/ANGLE/src/libANGLE/Buffer.hSource/ThirdParty/ANGLE/src/libANGLE/Caps.cppSource/ThirdParty/ANGLE/src/libANGLE/Caps.hSource/ThirdParty/ANGLE/src/libANGLE/Context.cppSource/ThirdParty/ANGLE/src/libANGLE/Context.hSource/ThirdParty/ANGLE/src/libANGLE/Context.inl.hSource/ThirdParty/ANGLE/src/libANGLE/Context_gles_ext_autogen.hSource/ThirdParty/ANGLE/src/libANGLE/ErrorStrings.hSource/ThirdParty/ANGLE/src/libANGLE/Framebuffer.cppSource/ThirdParty/ANGLE/src/libANGLE/State.cppSource/ThirdParty/ANGLE/src/libANGLE/Surface.cppSource/ThirdParty/ANGLE/src/libANGLE/Texture.cppSource/ThirdParty/ANGLE/src/libANGLE/Texture.hSource/ThirdParty/ANGLE/src/libANGLE/TransformFeedback.cppSource/ThirdParty/ANGLE/src/libANGLE/VertexArray.cppSource/ThirdParty/ANGLE/src/libANGLE/VertexArray.hSource/ThirdParty/ANGLE/src/libANGLE/VertexArray_unittest.cppSource/ThirdParty/ANGLE/src/libANGLE/angletypes.hSource/ThirdParty/ANGLE/src/libANGLE/capture/capture_gles_ext_autogen.cppSource/ThirdParty/ANGLE/src/libANGLE/capture/capture_gles_ext_autogen.hSource/ThirdParty/ANGLE/src/libANGLE/capture/capture_gles_ext_params.cppSource/ThirdParty/ANGLE/src/libANGLE/gles_extensions_autogen.cppSource/ThirdParty/ANGLE/src/libANGLE/gles_extensions_autogen.hSource/ThirdParty/ANGLE/src/libANGLE/queryutils.cppSource/ThirdParty/ANGLE/src/libANGLE/renderer/SurfaceImpl.cppSource/ThirdParty/ANGLE/src/libANGLE/renderer/SurfaceImpl.hSource/ThirdParty/ANGLE/src/libANGLE/renderer/VertexArrayImpl.hSource/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/SurfaceD3D.cppSource/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/SurfaceD3D.hSource/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/Query11.cppSource/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/renderer11_utils.cppSource/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d9/Query9.cppSource/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d9/renderer9_utils.cppSource/ThirdParty/ANGLE/src/libANGLE/renderer/driver_utils.hSource/ThirdParty/ANGLE/src/libANGLE/renderer/gl/ContextGL.cppSource/ThirdParty/ANGLE/src/libANGLE/renderer/gl/DispatchTableGL_autogen.cppSource/ThirdParty/ANGLE/src/libANGLE/renderer/gl/DispatchTableGL_autogen.hSource/ThirdParty/ANGLE/src/libANGLE/renderer/gl/QueryGL.cppSource/ThirdParty/ANGLE/src/libANGLE/renderer/gl/QueryGL.hSource/ThirdParty/ANGLE/src/libANGLE/renderer/gl/functionsgl_typedefs.hSource/ThirdParty/ANGLE/src/libANGLE/renderer/gl/gl_bindings_data.jsonSource/ThirdParty/ANGLE/src/libANGLE/renderer/gl/null_functions.cppSource/ThirdParty/ANGLE/src/libANGLE/renderer/gl/null_functions.hSource/ThirdParty/ANGLE/src/libANGLE/renderer/gl/renderergl_utils.cppSource/ThirdParty/ANGLE/src/libANGLE/renderer/gl/renderergl_utils.hSource/ThirdParty/ANGLE/src/libANGLE/renderer/gl/wgl/D3DTextureSurfaceWGL.cppSource/ThirdParty/ANGLE/src/libANGLE/renderer/gl/wgl/D3DTextureSurfaceWGL.hSource/ThirdParty/ANGLE/src/libANGLE/renderer/metal/ProvokingVertexHelper.mmSource/ThirdParty/ANGLE/src/libANGLE/renderer/metal/VertexArrayMtl.mmSource/ThirdParty/ANGLE/src/libANGLE/renderer/metal/mtl_command_buffer.hSource/ThirdParty/ANGLE/src/libANGLE/renderer/metal/mtl_command_buffer.mmSource/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/ContextVk.cppSource/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/ContextVk.hSource/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/ProgramExecutableVk.cppSource/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/ProgramExecutableVk.hSource/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/SurfaceVk.cppSource/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/TextureVk.cppSource/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/UtilsVk.cppSource/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/VertexArrayVk.cppSource/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/spv_utils.cppSource/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/spv_utils.hSource/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/vk_caps_utils.cppSource/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/vk_format_utils.cppSource/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/vk_helpers.cppSource/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/vk_helpers.hSource/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/vk_renderer.cppSource/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/vk_renderer.hSource/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/vk_utils.cppSource/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/vk_utils.hSource/ThirdParty/ANGLE/src/libANGLE/renderer/wgpu/BUILD.gnSource/ThirdParty/ANGLE/src/libANGLE/renderer/wgpu/BufferWgpu.cppSource/ThirdParty/ANGLE/src/libANGLE/renderer/wgpu/ContextWgpu.cppSource/ThirdParty/ANGLE/src/libANGLE/renderer/wgpu/ContextWgpu.hSource/ThirdParty/ANGLE/src/libANGLE/renderer/wgpu/DeviceWgpu.cppSource/ThirdParty/ANGLE/src/libANGLE/renderer/wgpu/DisplayWgpu.cppSource/ThirdParty/ANGLE/src/libANGLE/renderer/wgpu/DisplayWgpu.hSource/ThirdParty/ANGLE/src/libANGLE/renderer/wgpu/ImageWgpu.cppSource/ThirdParty/ANGLE/src/libANGLE/renderer/wgpu/ImageWgpu.hSource/ThirdParty/ANGLE/src/libANGLE/renderer/wgpu/ProgramExecutableWgpu.cppSource/ThirdParty/ANGLE/src/libANGLE/renderer/wgpu/ProgramWgpu.cppSource/ThirdParty/ANGLE/src/libANGLE/renderer/wgpu/RenderbufferWgpu.cppSource/ThirdParty/ANGLE/src/libANGLE/renderer/wgpu/RenderbufferWgpu.hSource/ThirdParty/ANGLE/src/libANGLE/renderer/wgpu/SurfaceWgpu.cppSource/ThirdParty/ANGLE/src/libANGLE/renderer/wgpu/SurfaceWgpu.hSource/ThirdParty/ANGLE/src/libANGLE/renderer/wgpu/TextureWgpu.cppSource/ThirdParty/ANGLE/src/libANGLE/renderer/wgpu/TextureWgpu.hSource/ThirdParty/ANGLE/src/libANGLE/renderer/wgpu/VertexArrayWgpu.cppSource/ThirdParty/ANGLE/src/libANGLE/renderer/wgpu/linux/x11/WindowSurfaceWgpuX11.cppSource/ThirdParty/ANGLE/src/libANGLE/renderer/wgpu/mac/WindowSurfaceWgpuMetalLayer.mmSource/ThirdParty/ANGLE/src/libANGLE/renderer/wgpu/wgpu_command_buffer.cppSource/ThirdParty/ANGLE/src/libANGLE/renderer/wgpu/wgpu_command_buffer.hSource/ThirdParty/ANGLE/src/libANGLE/renderer/wgpu/wgpu_format_map.jsonSource/ThirdParty/ANGLE/src/libANGLE/renderer/wgpu/wgpu_format_table_autogen.cppSource/ThirdParty/ANGLE/src/libANGLE/renderer/wgpu/wgpu_format_utils.cppSource/ThirdParty/ANGLE/src/libANGLE/renderer/wgpu/wgpu_format_utils.hSource/ThirdParty/ANGLE/src/libANGLE/renderer/wgpu/wgpu_helpers.cppSource/ThirdParty/ANGLE/src/libANGLE/renderer/wgpu/wgpu_helpers.hSource/ThirdParty/ANGLE/src/libANGLE/renderer/wgpu/wgpu_pipeline_state.cppSource/ThirdParty/ANGLE/src/libANGLE/renderer/wgpu/wgpu_proc_utils.cppSource/ThirdParty/ANGLE/src/libANGLE/renderer/wgpu/wgpu_proc_utils.hSource/ThirdParty/ANGLE/src/libANGLE/renderer/wgpu/wgpu_sources.gniSource/ThirdParty/ANGLE/src/libANGLE/renderer/wgpu/wgpu_utils.cppSource/ThirdParty/ANGLE/src/libANGLE/renderer/wgpu/wgpu_utils.hSource/ThirdParty/ANGLE/src/libANGLE/renderer/wgpu/win32/WindowSurfaceWgpuWin32.cppSource/ThirdParty/ANGLE/src/libANGLE/validationEGL.cppSource/ThirdParty/ANGLE/src/libANGLE/validationES.cppSource/ThirdParty/ANGLE/src/libANGLE/validationES2.cppSource/ThirdParty/ANGLE/src/libANGLE/validationES3.cppSource/ThirdParty/ANGLE/src/libANGLE/validationES31.cppSource/ThirdParty/ANGLE/src/libANGLE/validationES31.hSource/ThirdParty/ANGLE/src/libANGLE/validationESEXT.cppSource/ThirdParty/ANGLE/src/libANGLE/validationESEXT_autogen.hSource/ThirdParty/ANGLE/src/libGLESv2.gniSource/ThirdParty/ANGLE/src/libGLESv2/entry_points_gles_1_0_autogen.cppSource/ThirdParty/ANGLE/src/libGLESv2/entry_points_gles_2_0_autogen.cppSource/ThirdParty/ANGLE/src/libGLESv2/entry_points_gles_3_0_autogen.cppSource/ThirdParty/ANGLE/src/libGLESv2/entry_points_gles_3_1_autogen.cppSource/ThirdParty/ANGLE/src/libGLESv2/entry_points_gles_3_2_autogen.cppSource/ThirdParty/ANGLE/src/libGLESv2/entry_points_gles_ext_autogen.cppSource/ThirdParty/ANGLE/src/libGLESv2/entry_points_gles_ext_autogen.hSource/ThirdParty/ANGLE/src/libGLESv2/libGLESv2_autogen.cppSource/ThirdParty/ANGLE/src/libGLESv2/libGLESv2_autogen.defSource/ThirdParty/ANGLE/src/libGLESv2/libGLESv2_no_capture_autogen.defSource/ThirdParty/ANGLE/src/libGLESv2/libGLESv2_vulkan_secondaries_autogen.defSource/ThirdParty/ANGLE/src/libGLESv2/libGLESv2_with_capture_autogen.defSource/ThirdParty/ANGLE/src/tests/BUILD.gnSource/ThirdParty/ANGLE/src/tests/angle_end2end_tests.gniSource/ThirdParty/ANGLE/src/tests/angle_end2end_tests_expectations.txtSource/ThirdParty/ANGLE/src/tests/compiler_tests/Parse_test.cppSource/ThirdParty/ANGLE/src/tests/deqp_support/deqp.gniSource/ThirdParty/ANGLE/src/tests/gl_tests/ClearTest.cppSource/ThirdParty/ANGLE/src/tests/gl_tests/DrawBaseVertexBaseInstanceTest.cppSource/ThirdParty/ANGLE/src/tests/gl_tests/ErrorMessages.cppSource/ThirdParty/ANGLE/src/tests/gl_tests/GLSLTest.cppSource/ThirdParty/ANGLE/src/tests/gl_tests/GLSLUBTest.cppSource/ThirdParty/ANGLE/src/tests/gl_tests/ImageTest.cppSource/ThirdParty/ANGLE/src/tests/gl_tests/MipmapTest.cppSource/ThirdParty/ANGLE/src/tests/gl_tests/MultiDrawTest.cppSource/ThirdParty/ANGLE/src/tests/gl_tests/SyncQueriesTest.cppSource/ThirdParty/ANGLE/src/tests/gl_tests/TextureTest.cppSource/ThirdParty/ANGLE/src/tests/gl_tests/TransformFeedbackTest.cppSource/ThirdParty/ANGLE/src/tests/gl_tests/WebGLCompatibilityTest.cppSource/ThirdParty/ANGLE/src/tests/restricted_traces/restricted_trace_perf.pySource/ThirdParty/ANGLE/src/tests/restricted_traces/restricted_traces.jsonSource/ThirdParty/ANGLE/src/tests/test_utils/angle_test_instantiate.cppSource/ThirdParty/ANGLE/src/tests/test_utils/angle_test_platform.cppSource/ThirdParty/ANGLE/src/tests/test_utils/angle_test_platform.hSource/ThirdParty/ANGLE/util/autogen/angle_features_autogen.cppSource/ThirdParty/ANGLE/util/autogen/angle_features_autogen.hSource/ThirdParty/ANGLE/util/capture/frame_capture_replay_autogen.cpp
Audit Directions
- Diff the ANGLE roll against upstreamRecover 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-insAudit 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 lifetimesIn 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 markersTreat 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.
References
On This Page