Targets: Android Chrome (direct) &
Windows Chrome with --use-angle=gl or --use-angle=gles.
Android Chrome (direct):
1. Open this page in Chrome for Android.
2. The page should trigger a renderer process crash.
3. Check chrome://crashes for the crash report.
Windows Chrome (OpenGL backend):
1. Launch Chrome with: chrome.exe --use-angle=gl (or --use-angle=gles)
2. Open this page.
3. The renderer process should crash.
4. Without the flag, Chrome uses D3D11 which does not route through FramebufferGL.cpp.
Crash location (from ANGLE ASan build):
RearrangeEXTTextureNorm16Pixels()
src/libANGLE/renderer/gl/FramebufferGL.cpp:462
dstPixel[0] = srcPixel[0]; // write to clientPixels=(GLubyte*)PBO_OFFSET = (GLubyte*)0x10000
// attacker-controlled — NOT a null deref
Root cause:
readPixelsAllAtOnce() calls setPixelPackState() but never setPixelPackBuffer(nullptr).
The native glReadPixels call type-confuses the CPU heap pointer (tmpPixels) as a
GPU PBO byte offset → GPU OOB write at ~heap address.
Contrast with safe path: BlitGL.cpp:864-865 (CVE-2026-6296 fix).