From 089b0bb4f96c55c5fc00fb4c5487ad6c65c1c403 Mon Sep 17 00:00:00 2001 From: Taras Antoshchuk Date: Tue, 14 Jul 2020 18:27:10 +0200 Subject: [PATCH] Use clean calling identity to clear preferred activities In some cases we need to clear preferred activities for all users after changing mimeGroups via PackageManager#setMimeGroup. This can result in clearing preferred activities for non-current user. Which will cause SecurityException if done without using clean calling identity. Test: multiple users on device; atest CtsDynamicMimeHostTestCases Bug: 161239297 Change-Id: I0a84702526ea5ab110aa44056d0407d106d079e3 --- .../core/java/com/android/server/pm/PackageManagerService.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index a2d0eaedbd44f..b4ab57fa4dc84 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -25539,7 +25539,8 @@ public class PackageManagerService extends IPackageManager.Stub private void applyMimeGroupChanges(String packageName, String mimeGroup) { if (mComponentResolver.updateMimeGroup(packageName, mimeGroup)) { - clearPackagePreferredActivities(packageName, UserHandle.USER_ALL); + Binder.withCleanCallingIdentity(() -> + clearPackagePreferredActivities(packageName, UserHandle.USER_ALL)); } mPmInternal.writeSettings(false);