Android security tags, read closely by Lightrion

CVE-2026-28581 AI-generated analysis

platform/packages/services/Telecomm, CallIntentProcessor (outgoing call intent handling for managed profiles)

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.

Telecom's CallIntentProcessor.fixInitiatingUserIfNecessary now decides whether a managed (work) profile has a dialer by asking RoleManager for a ROLE_DIALER holder in that user and verifying with PackageManager that the holder package exists and is enabled, instead of checking whether any activity in the profile resolves ACTION_DIAL via DefaultDialerManager.getInstalledDialerApplications.

Root cause

fixInitiatingUserIfNecessary(Context, Intent) in src/com/android/server/telecom/CallIntentProcessor.java is meant to re-attribute a call initiated from a managed profile to the parent user when the work profile has no dialer. It decided "no dialer" with DefaultDialerManager.getInstalledDialerApplications(context, userId).size() == 0, i.e. by whether anything in the work profile resolves the ACTION_DIAL intent. Per the commit message, a PackageManager#queryIntentActivitiesAsUser regression reported the "android" package (system server) as an ACTION_DIAL handler in the work profile even when nothing there handles it. The check therefore wrongly concluded that a work dialer existed, and the call was not trampolined to the personal profile. The first fix replaced this with a count of RoleManager.getRoleHolders(ROLE_DIALER). Per the second commit message, on Android 14 getQualifiedDefaultHolderPackageName from Role used the system user and could falsely report the default system dialer role as active for the work profile. So a role holder listed for the profile still did not guarantee an actual enabled dialer there.

How the fix works

Completeness

Behavior changes

Per major

Unknowns

Back to September 2026 · Findings