Android security tags, read closely by Lightrion

CVE-2026-49932 AI-generated analysis

platform/frameworks/base, telephony/common MMS PDU parser (com.google.android.mms.pdu.PduParser)

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

Hardens PduParser.parseParts in frameworks/base telephony/common so malformed MMS multipart PDUs are rejected (parse returns null) instead of causing OutOfMemoryError, StackOverflowError, NullPointerException or ArrayIndexOutOfBoundsException. It rejects a declared part dataLength larger than the bytes left in the stream, caps recursion into multipart/vnd.wap.multipart.alternative parts at depth 30, and checks that the nested result is non-null and non-empty before taking its first part.

Root cause

In PduParser.parseParts (telephony/common/com/google/android/mms/pdu/PduParser.java), when a part's dataLength was > 0 the parser immediately did `new byte[dataLength]` without comparing it to pduDataStream.available(). A hostile length could therefore cause an oversized allocation (OutOfMemoryError, per the commit message). When the part content type was ContentType.MULTIPART_ALTERNATIVE, parseParts recursed on the part data with no depth limit, so deeply nested parts could exhaust the stack (StackOverflowError). The recursive result childBody was then used as childBody.getPart(0) without checking that childBody was non-null (NullPointerException) or had at least one part (ArrayIndexOutOfBoundsException). The new tests feed short PDUs, labelled as NPE, AIOOBE and OOM triggers, through PduParser.parse() and expect null.

How the fix works

Completeness

Behavior changes

Per major

Unknowns

Back to September 2026 · Findings