Android security tags, read closely by Lightrion

CVE-2024-49745 AI-generated analysis

platform/frameworks/native, libbinder (libs/binder/Parcel.cpp, Parcel growth/write path)

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.

Parcel::growData in libbinder now rejects a grow request with BAD_VALUE when the current data position is beyond the data size, instead of going ahead with growth that per the commit message used to abort or could request a very large allocation.

Root cause

Parcel::growData(len) is only expected to be called at the end of a Parcel, as the new log message says. Before the fix it checked len and overflow (len > SIZE_MAX - mDataSize, mDataSize + len > SIZE_MAX / 3) and computed newSize = ((mDataSize+len)*3)/2 without looking at mDataPos. Parcel::setDataPosition(pos) only rejects pos > INT32_MAX and does not clamp pos to mDataSize, so a Parcel can end up with mDataPos > mDataSize. Per the commit message, that case "used to abort", and allocating that much memory "may cause OOM or other issues".

How the fix works

Completeness

Behavior changes

Per major

Unknowns

Back to January 2025 · Findings