Android security tags, read closely by Lightrion

CVE-2026-58880 AI-generated analysis

platform/packages/modules/Bluetooth, system/btif AVRCP controller (btif_rc.cc, bt_rc.h HAL interface, com_android_bluetooth_avrcp_controller.cpp JNI)

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.

Removes the num_ext_attr/ext_attrs parameters from the AVRCP controller playerapplicationsetting_cb HAL callback, so the callback no longer carries a pointer to ext_attrs data that handle_app_attr_val_txt_response frees. It also makes that free (cleanup_app_attr_val_txt_response) synchronous instead of posting it to the JNI thread.

Root cause

In system/btif/src/btif_rc.cc, the final branch of handle_app_attr_val_txt_response (reached after all extended attribute value texts were received) bound bt_rc_ctrl_callbacks->playerapplicationsetting_cb with the raw pointers p_app_settings->attrs and p_app_settings->ext_attrs. On Android 16 it posted the callback to the JNI thread with do_in_jni_thread; on Android 17 it dispatched it through the CTRL_HAL_CBACK macro. It also arranged for cleanup_app_attr_val_txt_response(p_app_settings) to free memory held inside the ext_attrs structure. Per the commit message, the callback runs asynchronously on the JNI thread while the calling thread frees the ext_attrs memory, so the callback can see a dangling ext_attrs pointer. The JNI implementation btavrcp_playerapplicationsetting_callback never used num_ext_attr/ext_attrs: both are commented out, next to a "TODO ext attrs" note.

How the fix works

Completeness

Behavior changes

Per major

Unknowns

Back to October 2026 · Findings