From 71a04578a744eb08f9748e422d7f7a7c7a5095ef Mon Sep 17 00:00:00 2001 From: Songchun Fan Date: Fri, 9 Sep 2022 11:38:41 -0700 Subject: [PATCH 1/2] [pm] fix thread tag PermissionManagerServiceImpl also uses the "PackageManager tag". As a result, we might see two "PackageManager" threads in the threads dump which is confusing. Fixing the tag to be "PermissionManager". BUG: 245494249 Test: builds Change-Id: I751b737dd5d5c6ab246012c9c09c9bb990fcc912 --- .../server/pm/permission/LegacyPermissionManagerService.java | 2 +- .../server/pm/permission/PermissionManagerServiceImpl.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/services/core/java/com/android/server/pm/permission/LegacyPermissionManagerService.java b/services/core/java/com/android/server/pm/permission/LegacyPermissionManagerService.java index 88b4a94f70270..23872d4fe6349 100644 --- a/services/core/java/com/android/server/pm/permission/LegacyPermissionManagerService.java +++ b/services/core/java/com/android/server/pm/permission/LegacyPermissionManagerService.java @@ -46,7 +46,7 @@ import com.android.server.pm.UserManagerService; * Legacy permission manager service. */ public class LegacyPermissionManagerService extends ILegacyPermissionManager.Stub { - private static final String TAG = "PackageManager"; + private static final String TAG = "PermissionManager"; /** Injector that can be used to facilitate testing. */ private final Injector mInjector; diff --git a/services/core/java/com/android/server/pm/permission/PermissionManagerServiceImpl.java b/services/core/java/com/android/server/pm/permission/PermissionManagerServiceImpl.java index c05d5cea0bedf..4c095fb6db46d 100644 --- a/services/core/java/com/android/server/pm/permission/PermissionManagerServiceImpl.java +++ b/services/core/java/com/android/server/pm/permission/PermissionManagerServiceImpl.java @@ -168,7 +168,7 @@ import java.util.concurrent.TimeoutException; */ public class PermissionManagerServiceImpl implements PermissionManagerServiceInterface { - private static final String TAG = "PackageManager"; + private static final String TAG = "PermissionManager"; private static final String LOG_TAG = PermissionManagerServiceImpl.class.getSimpleName(); private static final String SKIP_KILL_APP_REASON_NOTIFICATION_TEST = "skip permission revoke " From 15f85c7fa97fe9faa540e6ad9e850990f46a5cca Mon Sep 17 00:00:00 2001 From: Songchun Fan Date: Fri, 9 Sep 2022 14:50:31 -0700 Subject: [PATCH 2/2] [pm] forbid deletion of protected packages BUG: 242996180 Test: adb shell pm uninstall --user 0 com.google.android.apps.work.oobconfig Test: Verified with the command above. Before this CL, the package can be deleted. After this CL, the deletion will fail. Change-Id: I986e4d9661a645da28537a5390214cae837c77d5 Change-Id: Iba408e536b340ea5d66ab499442c0c4f828fa36f --- .../com/android/server/pm/DeletePackageHelper.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/services/core/java/com/android/server/pm/DeletePackageHelper.java b/services/core/java/com/android/server/pm/DeletePackageHelper.java index bda7b823adc3c..7193587d11193 100644 --- a/services/core/java/com/android/server/pm/DeletePackageHelper.java +++ b/services/core/java/com/android/server/pm/DeletePackageHelper.java @@ -673,6 +673,18 @@ final class DeletePackageHelper { final String packageName = versionedPackage.getPackageName(); final long versionCode = versionedPackage.getLongVersionCode(); + if (mPm.mProtectedPackages.isPackageDataProtected(userId, packageName)) { + mPm.mHandler.post(() -> { + try { + Slog.w(TAG, "Attempted to delete protected package: " + packageName); + observer.onPackageDeleted(packageName, + PackageManager.DELETE_FAILED_INTERNAL_ERROR, null); + } catch (RemoteException re) { + } + }); + return; + } + try { if (mPm.mInjector.getLocalService(ActivityTaskManagerInternal.class) .isBaseOfLockedTask(packageName)) {