From a478dfcc38f63693115af973095417dc51ced068 Mon Sep 17 00:00:00 2001 From: Jackal Guo Date: Tue, 18 Aug 2020 13:15:40 +0800 Subject: [PATCH] Rename pmInternal#getPackageUidInternal (1/4) This method was added to operate as an internal variant of the public getPackageUid method since pmInternal#getPackageUid already exist. However, pmInternal#getPackageUid method just called to the public interface, and enforcing permissions and visibility checks. Since we don't expect any UID/permission checks in a local service, any callers to this method requiring permission checks should be migrated onto the PackageManager public method. Remove the original pmInternal#getPackageUid and rename #getPackageUidInternal to take its place. Bug: 148235092 Test: Build pass and boot Change-Id: Ibd4aa8a6a7743ff378a23e21c68efc52692580c7 --- .../content/pm/PackageManagerInternal.java | 15 +-------------- .../android/server/StorageManagerService.java | 2 +- .../server/pm/CrossProfileAppsServiceImpl.java | 2 +- .../server/pm/PackageManagerService.java | 6 ------ .../com/android/server/pm/ShortcutService.java | 2 +- .../server/uri/UriGrantsManagerService.java | 17 +++++++++-------- .../pm/CrossProfileAppsServiceImplRoboTest.java | 4 ++-- .../server/uri/UriGrantsMockContext.java | 12 ++++++------ 8 files changed, 21 insertions(+), 39 deletions(-) diff --git a/services/core/java/android/content/pm/PackageManagerInternal.java b/services/core/java/android/content/pm/PackageManagerInternal.java index b241bd16d3eea..3bed506122a34 100644 --- a/services/core/java/android/content/pm/PackageManagerInternal.java +++ b/services/core/java/android/content/pm/PackageManagerInternal.java @@ -300,25 +300,12 @@ public abstract class PackageManagerInternal { public abstract @PackageManager.DistractionRestriction int getDistractingPackageRestrictions( String packageName, int userId); - /** - * Do a straight uid lookup for the given package/application in the given user. This enforces - * app visibility rules and permissions. Call {@link #getPackageUidInternal} for the internal - * implementation. - * @deprecated Use {@link PackageManager#getPackageUid(String, int)} - * @return The app's uid, or < 0 if the package was not found in that user - */ - @Deprecated - public abstract int getPackageUid(String packageName, - @PackageInfoFlags int flags, int userId); - /** * Do a straight uid lookup for the given package/application in the given user. * @see PackageManager#getPackageUidAsUser(String, int, int) * @return The app's uid, or < 0 if the package was not found in that user - * TODO(b/148235092): rename this to getPackageUid */ - public abstract int getPackageUidInternal(String packageName, - @PackageInfoFlags int flags, int userId); + public abstract int getPackageUid(String packageName, @PackageInfoFlags int flags, int userId); /** * Retrieve all of the information we know about a particular package/application. diff --git a/services/core/java/com/android/server/StorageManagerService.java b/services/core/java/com/android/server/StorageManagerService.java index 1520dd351c978..63ac825527f2b 100644 --- a/services/core/java/com/android/server/StorageManagerService.java +++ b/services/core/java/com/android/server/StorageManagerService.java @@ -2153,7 +2153,7 @@ class StorageManagerService extends IStorageManager.Stub Slog.i(TAG, "Remounting storage for pid: " + pid); final String[] sharedPackages = mPmInternal.getSharedUserPackagesForPackage(packageName, userId); - final int uid = mPmInternal.getPackageUidInternal(packageName, 0, userId); + final int uid = mPmInternal.getPackageUid(packageName, 0 /* flags */, userId); final String[] packages = sharedPackages.length != 0 ? sharedPackages : new String[]{packageName}; try { diff --git a/services/core/java/com/android/server/pm/CrossProfileAppsServiceImpl.java b/services/core/java/com/android/server/pm/CrossProfileAppsServiceImpl.java index 617f6879e65e5..a234f5ac3f3ef 100644 --- a/services/core/java/com/android/server/pm/CrossProfileAppsServiceImpl.java +++ b/services/core/java/com/android/server/pm/CrossProfileAppsServiceImpl.java @@ -605,7 +605,7 @@ public class CrossProfileAppsServiceImpl extends ICrossProfileApps.Stub { private boolean isPlatformSignedAppWithAutomaticProfilesPermission( String packageName, int[] profileIds) { for (int userId : profileIds) { - final int uid = mInjector.getPackageManagerInternal().getPackageUidInternal( + final int uid = mInjector.getPackageManagerInternal().getPackageUid( packageName, /* flags= */ 0, userId); if (uid == -1) { continue; diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index a754497953c10..8d50c73f6b783 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -24506,12 +24506,6 @@ public class PackageManagerService extends IPackageManager.Stub @Override public int getPackageUid(String packageName, int flags, int userId) { - return PackageManagerService.this - .getPackageUid(packageName, flags, userId); - } - - @Override - public int getPackageUidInternal(String packageName, int flags, int userId) { return PackageManagerService.this .getPackageUidInternal(packageName, flags, userId, Process.SYSTEM_UID); } diff --git a/services/core/java/com/android/server/pm/ShortcutService.java b/services/core/java/com/android/server/pm/ShortcutService.java index f16b5b48d913a..2eefac13a6fb8 100644 --- a/services/core/java/com/android/server/pm/ShortcutService.java +++ b/services/core/java/com/android/server/pm/ShortcutService.java @@ -3305,7 +3305,7 @@ public class ShortcutService extends IShortcutService.Stub { final long token = Binder.clearCallingIdentity(); try { - int packageUid = mPackageManagerInternal.getPackageUidInternal(packageName, + int packageUid = mPackageManagerInternal.getPackageUid(packageName, PackageManager.MATCH_DIRECT_BOOT_AUTO, userId); // Grant read uri permission to the caller on behalf of the shortcut owner. All // granted permissions are revoked when the default launcher changes, or when diff --git a/services/core/java/com/android/server/uri/UriGrantsManagerService.java b/services/core/java/com/android/server/uri/UriGrantsManagerService.java index f5e1602ee6bea..b62121ada433e 100644 --- a/services/core/java/com/android/server/uri/UriGrantsManagerService.java +++ b/services/core/java/com/android/server/uri/UriGrantsManagerService.java @@ -259,7 +259,7 @@ public class UriGrantsManagerService extends IUriGrantsManager.Stub { final int callingUid = Binder.getCallingUid(); final int callingUserId = UserHandle.getUserId(callingUid); final PackageManagerInternal pm = LocalServices.getService(PackageManagerInternal.class); - final int packageUid = pm.getPackageUidInternal(packageName, + final int packageUid = pm.getPackageUid(packageName, MATCH_DIRECT_BOOT_AWARE | MATCH_DIRECT_BOOT_UNAWARE, callingUserId); if (packageUid != callingUid) { throw new SecurityException( @@ -337,7 +337,7 @@ public class UriGrantsManagerService extends IUriGrantsManager.Stub { if (toPackage != null) { mAmInternal.enforceCallingPermission(FORCE_PERSISTABLE_URI_PERMISSIONS, "takePersistableUriPermission"); - uid = mPmInternal.getPackageUidInternal(toPackage, 0, userId); + uid = mPmInternal.getPackageUid(toPackage, 0 /* flags */, userId); } else { enforceNotIsolatedCaller("takePersistableUriPermission"); uid = Binder.getCallingUid(); @@ -402,7 +402,7 @@ public class UriGrantsManagerService extends IUriGrantsManager.Stub { if (toPackage != null) { mAmInternal.enforceCallingPermission(FORCE_PERSISTABLE_URI_PERMISSIONS, "releasePersistableUriPermission"); - uid = mPmInternal.getPackageUidInternal(toPackage, 0, userId); + uid = mPmInternal.getPackageUid(toPackage, 0 /* flags */ , userId); } else { enforceNotIsolatedCaller("releasePersistableUriPermission"); uid = Binder.getCallingUid(); @@ -601,7 +601,7 @@ public class UriGrantsManagerService extends IUriGrantsManager.Stub { if (needed != null) { targetUid = needed.targetUid; } else { - targetUid = mPmInternal.getPackageUidInternal(targetPkg, MATCH_DEBUG_TRIAGED_MISSING, + targetUid = mPmInternal.getPackageUid(targetPkg, MATCH_DEBUG_TRIAGED_MISSING, targetUserId); if (targetUid < 0) { if (DEBUG) Slog.v(TAG, "Can't grant URI permission no uid for: " + targetPkg @@ -691,7 +691,7 @@ public class UriGrantsManagerService extends IUriGrantsManager.Stub { final ProviderInfo pi = getProviderInfo(uri.getAuthority(), sourceUserId, MATCH_DIRECT_BOOT_AWARE | MATCH_DIRECT_BOOT_UNAWARE); if (pi != null && sourcePkg.equals(pi.packageName)) { - int targetUid = mPmInternal.getPackageUidInternal( + int targetUid = mPmInternal.getPackageUid( targetPkg, MATCH_UNINSTALLED_PACKAGES, targetUserId); if (targetUid != -1) { final GrantUri grantUri = new GrantUri(sourceUserId, uri, @@ -788,7 +788,7 @@ public class UriGrantsManagerService extends IUriGrantsManager.Stub { if (targetPkg == null) { throw new NullPointerException("targetPkg"); } - int targetUid = mPmInternal.getPackageUidInternal(targetPkg, MATCH_DEBUG_TRIAGED_MISSING, + int targetUid = mPmInternal.getPackageUid(targetPkg, MATCH_DEBUG_TRIAGED_MISSING, targetUserId); targetUid = checkGrantUriPermissionUnlocked(callingUid, targetPkg, grantUri, modeFlags, @@ -1109,7 +1109,7 @@ public class UriGrantsManagerService extends IUriGrantsManager.Stub { int targetUid = lastTargetUid; if (targetUid < 0 && targetPkg != null) { - targetUid = mPmInternal.getPackageUidInternal(targetPkg, MATCH_DEBUG_TRIAGED_MISSING, + targetUid = mPmInternal.getPackageUid(targetPkg, MATCH_DEBUG_TRIAGED_MISSING, UserHandle.getUserId(callingUid)); if (targetUid < 0) { if (DEBUG) Slog.v(TAG, "Can't grant URI permission no uid for: " + targetPkg); @@ -1461,7 +1461,8 @@ public class UriGrantsManagerService extends IUriGrantsManager.Stub { boolean printed = false; int dumpUid = -2; if (dumpPackage != null) { - dumpUid = mPmInternal.getPackageUidInternal(dumpPackage, MATCH_ANY_USER, 0); + dumpUid = mPmInternal.getPackageUid(dumpPackage, + MATCH_ANY_USER, 0 /* userId */); } for (int i = 0; i < mGrantedUriPermissions.size(); i++) { int uid = mGrantedUriPermissions.keyAt(i); diff --git a/services/robotests/src/com/android/server/pm/CrossProfileAppsServiceImplRoboTest.java b/services/robotests/src/com/android/server/pm/CrossProfileAppsServiceImplRoboTest.java index 4b25890e5fdb6..5fa809fc89af4 100644 --- a/services/robotests/src/com/android/server/pm/CrossProfileAppsServiceImplRoboTest.java +++ b/services/robotests/src/com/android/server/pm/CrossProfileAppsServiceImplRoboTest.java @@ -204,10 +204,10 @@ public class CrossProfileAppsServiceImplRoboTest { CROSS_PROFILE_APP_PACKAGE_NAME, PERSONAL_PROFILE_UID, PERSONAL_PROFILE_USER_ID); ShadowApplicationPackageManager.setPackageUidAsUser( CROSS_PROFILE_APP_PACKAGE_NAME, WORK_PROFILE_UID, WORK_PROFILE_USER_ID); - when(mPackageManagerInternal.getPackageUidInternal( + when(mPackageManagerInternal.getPackageUid( CROSS_PROFILE_APP_PACKAGE_NAME, /* flags= */ 0, PERSONAL_PROFILE_USER_ID)) .thenReturn(PERSONAL_PROFILE_UID); - when(mPackageManagerInternal.getPackageUidInternal( + when(mPackageManagerInternal.getPackageUid( CROSS_PROFILE_APP_PACKAGE_NAME, /* flags= */ 0, WORK_PROFILE_USER_ID)) .thenReturn(WORK_PROFILE_UID); } diff --git a/services/tests/servicestests/src/com/android/server/uri/UriGrantsMockContext.java b/services/tests/servicestests/src/com/android/server/uri/UriGrantsMockContext.java index d5aee5d208f5e..2c719ff9e8b3b 100644 --- a/services/tests/servicestests/src/com/android/server/uri/UriGrantsMockContext.java +++ b/services/tests/servicestests/src/com/android/server/uri/UriGrantsMockContext.java @@ -120,17 +120,17 @@ public class UriGrantsMockContext extends ContextWrapper { LocalServices.addService(PackageManagerInternal.class, mPmInternal); for (int userId : new int[] { USER_PRIMARY, USER_SECONDARY }) { - when(mPmInternal.getPackageUidInternal(eq(PKG_SOCIAL), anyInt(), eq(userId))) + when(mPmInternal.getPackageUid(eq(PKG_SOCIAL), anyInt(), eq(userId))) .thenReturn(UserHandle.getUid(userId, UID_SOCIAL)); - when(mPmInternal.getPackageUidInternal(eq(PKG_CAMERA), anyInt(), eq(userId))) + when(mPmInternal.getPackageUid(eq(PKG_CAMERA), anyInt(), eq(userId))) .thenReturn(UserHandle.getUid(userId, UID_CAMERA)); - when(mPmInternal.getPackageUidInternal(eq(PKG_PRIVATE), anyInt(), eq(userId))) + when(mPmInternal.getPackageUid(eq(PKG_PRIVATE), anyInt(), eq(userId))) .thenReturn(UserHandle.getUid(userId, UID_PRIVATE)); - when(mPmInternal.getPackageUidInternal(eq(PKG_PUBLIC), anyInt(), eq(userId))) + when(mPmInternal.getPackageUid(eq(PKG_PUBLIC), anyInt(), eq(userId))) .thenReturn(UserHandle.getUid(userId, UID_PUBLIC)); - when(mPmInternal.getPackageUidInternal(eq(PKG_FORCE), anyInt(), eq(userId))) + when(mPmInternal.getPackageUid(eq(PKG_FORCE), anyInt(), eq(userId))) .thenReturn(UserHandle.getUid(userId, UID_FORCE)); - when(mPmInternal.getPackageUidInternal(eq(PKG_COMPLEX), anyInt(), eq(userId))) + when(mPmInternal.getPackageUid(eq(PKG_COMPLEX), anyInt(), eq(userId))) .thenReturn(UserHandle.getUid(userId, UID_COMPLEX)); when(mPmInternal.resolveContentProvider(eq(PKG_CAMERA), anyInt(), eq(userId)))