Android security tags, read closely by Lightrion

CVE-2026-45531 AI-generated analysis

platform/external/exfatprogs, fsck.exfat (fsck/fsck.c) and shared header include/libexfat.h

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 (8 corrections). Verify against the commit before relying on it.

Hardens fsck.exfat boot-sector validation in read_boot_region() against integer overflow and underflow from the on-disk vol_length, clu_offset and clu_count fields, and makes the shared DIV_ROUND_UP macro compute in 64-bit.

Root cause

In fsck/fsck.c:read_boot_region(), the size checks on the exFAT boot sector used arithmetic that could wrap. vol_length (64-bit, from disk) was multiplied by EXFAT_SECTOR_SIZE(bs) before the comparison with bd->size, so a large vol_length could wrap past the check. Nothing checked that clu_offset is smaller than vol_length, so a later subtraction of clu_offset from vol_length could underflow (per the fix's comment). clu_count was not capped to EXFAT_MAX_NUM_CLUSTER (0xFFFFFFF5), so later computations on clu_count could overflow (per the fix's comment). DIV_ROUND_UP in include/libexfat.h also did the (__i + __d - 1) addition in the operand's own type, so that addition could overflow for large inputs.

How the fix works

Completeness

Behavior changes

Per major

Unknowns

Back to September 2026 · Findings