Android security tags, read closely by Lightrion

CVE-2026-27280 AI-generated analysis

platform/external/dng_sdk (Adobe DNG SDK), pixel buffer reordering and DNG render pipeline

AI-generated: written from the bulletin and the fixing diffs by claude-fable-5-1, then checked against the code by claude-opus-5-5 (7 corrections). Verify against the commit before relying on it.

Updates external/dng_sdk from DNG SDK 1.7.1 build 2471 to build 2502. In OptimizeOrder (dng_pixel_buffer.cpp), unchecked 32-bit pointer-offset arithmetic is replaced with checked 64-bit arithmetic. dng_render_task::ProcessArea now indexes its temporary RGBTables/mask buffers in source-area coordinates and explicitly requires the src and dst areas to be the same size.

Root cause

In source/dng_pixel_buffer.cpp OptimizeOrder, the source and destination extents (sRange/dRange) were computed in uint32. The pointer rebase for negative steps was computed as (int32)(count - 1) * step * (int32)pixelSize in 32-bit signed arithmetic, so large counts, steps or pixel sizes could overflow and move sPtr/dPtr to the wrong address. A count of 0 made (count - 1) wrap, and negating a step equal to INT32_MIN was not checked. In source/dng_render.cpp dng_render_task::ProcessArea, the RGBTables mask and background-mask code indexed the temporary buffers with dstArea.t/dstArea.l and dstArea.W(), while the row loop and the per-row RGBTables buffer use srcArea. Nothing required srcBuffer.fArea and dstBuffer.fArea to be the same size. The material does not say which of these bundled changes is the one tracked as CVE-2026-27280.

How the fix works

Completeness

Behavior changes

Per major

Unknowns

Back to September 2026 · Findings