Android security tags, read closely by Lightrion

CVE-2023-45775 AI-generated analysis

platform/packages/modules/Bluetooth, system/bta/le_audio/broadcaster (LE Audio broadcaster)

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

Adds length checks (size >= 2) on the StreamingAudioContext LTV value in LeAudioBroadcasterImpl::CreateAudioBroadcast before it is written with UINT16_TO_STREAM and read with STREAM_TO_UINT16, returning early on short values.

Root cause

In system/bta/le_audio/broadcaster/broadcaster.cc, LeAudioBroadcasterImpl::CreateAudioBroadcast parses the subgroup metadata with LeAudioLtvMap::Parse and looks up the kLeAudioMetadataTypeStreamingAudioContext entry with ltv.Find(). The code then took the raw pointer to the entry's value (stream_context_vec.value().data()) and always treated it as a 2-byte field without checking its length. UINT16_TO_STREAM wrote two bytes into it on the PTS multiple-contexts path, and STREAM_TO_UINT16 read two bytes from it on every call. A value shorter than 2 bytes made the write and the read go past the end of the vector's storage.

How the fix works

Completeness

Behavior changes

Per major

Unknowns

Back to December 2023 · Findings