From 9321e8c9d90b8fa838c1984176dbd2bfcf4e0419 Mon Sep 17 00:00:00 2001 From: JW Wang Date: Fri, 16 Sep 2022 09:53:02 +0800 Subject: [PATCH] getDeviceOwnerDeletedPackageMsg() should call clearCallingIdentity() DevicePolicyResourcesManager should be called in the context of system_server instead of the calling app to avoid UID and package name mismatch. Bug: 246487618 Test: atest SessionCommitBroadcastTest Change-Id: I1d27c7cd879d440abcf834830563368e50f521f2 --- .../android/server/pm/PackageInstallerService.java | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/services/core/java/com/android/server/pm/PackageInstallerService.java b/services/core/java/com/android/server/pm/PackageInstallerService.java index 66a97b3b9a890..218d9d1fd0859 100644 --- a/services/core/java/com/android/server/pm/PackageInstallerService.java +++ b/services/core/java/com/android/server/pm/PackageInstallerService.java @@ -1344,9 +1344,14 @@ public class PackageInstallerService extends IPackageInstaller.Stub implements } private String getDeviceOwnerDeletedPackageMsg() { - DevicePolicyManager dpm = mContext.getSystemService(DevicePolicyManager.class); - return dpm.getResources().getString(PACKAGE_DELETED_BY_DO, - () -> mContext.getString(R.string.package_deleted_device_owner)); + final long ident = Binder.clearCallingIdentity(); + try { + DevicePolicyManager dpm = mContext.getSystemService(DevicePolicyManager.class); + return dpm.getResources().getString(PACKAGE_DELETED_BY_DO, + () -> mContext.getString(R.string.package_deleted_device_owner)); + } finally { + Binder.restoreCallingIdentity(ident); + } } @Override