Android security tags, read closely by Lightrion

CVE-2026-49879 AI-generated analysis

platform/system/nfc (Android 14/15) and platform/packages/modules/Nfc libnfc-nci (Android 16/17), Type 3 Tag reader/writer (src/nfc/tags/rw_t3t.cc)

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

Widens block_id to uint32_t and recomputes the block-range bounds checks and loop limits in uint32_t in rw_t3t_send_next_ndef_update_cmd and rw_t3t_send_next_ndef_check_cmd (Type 3 Tag NDEF update/check), and frees the GKI command buffer when the bounds check fails.

Root cause

In rw_t3t_send_next_ndef_update_cmd and rw_t3t_send_next_ndef_check_cmd, the block-list loop used a uint16_t block_id running from first_block_to_write/first_block_to_read up to first + count. The guard before the loop (`count > UINT16_MAX - first`, logged as "Heap out-of-bounds" with tag 508389055) returned on error without freeing p_cmd_buf. The commit message says the range calculations and loop conditions needed to be done in uint32_t to prevent integer overflow. The material does not show the exact overflow condition that remained with the earlier guard in place, because the loop body and the derivation of the block values are not shown.

How the fix works

Completeness

Behavior changes

Per major

Unknowns

Back to September 2026 · Findings