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
This commit is contained in:
Taras Antoshchuk
2020-07-14 18:27:10 +02:00
parent 9c9434b30f
commit 089b0bb4f9

View File

@@ -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);