Loading core/java/android/app/ApplicationPackageManager.java +34 −55 Original line number Diff line number Diff line Loading @@ -165,51 +165,36 @@ public class ApplicationPackageManager extends PackageManager { public static final String PERMISSION_CONTROLLER_RESOURCE_PACKAGE = "com.android.permissioncontroller"; private final Object mLock = new Object(); @GuardedBy("mLock") private UserManager mUserManager; @GuardedBy("mLock") private PermissionManager mPermissionManager; @GuardedBy("mLock") private PackageInstaller mInstaller; @GuardedBy("mLock") private ArtManager mArtManager; @GuardedBy("mLock") private DevicePolicyManager mDevicePolicyManager; private volatile UserManager mUserManager; private volatile PermissionManager mPermissionManager; private volatile PackageInstaller mInstaller; private volatile ArtManager mArtManager; private volatile DevicePolicyManager mDevicePolicyManager; private volatile String mPermissionsControllerPackageName; @GuardedBy("mDelegates") private final ArrayList<MoveCallbackDelegate> mDelegates = new ArrayList<>(); @GuardedBy("mLock") private String mPermissionsControllerPackageName; UserManager getUserManager() { synchronized (mLock) { if (mUserManager == null) { mUserManager = UserManager.get(mContext); } return mUserManager; } } DevicePolicyManager getDevicePolicyManager() { synchronized (mLock) { if (mDevicePolicyManager == null) { mDevicePolicyManager = mContext.getSystemService(DevicePolicyManager.class); } return mDevicePolicyManager; } } private PermissionManager getPermissionManager() { synchronized (mLock) { if (mPermissionManager == null) { mPermissionManager = mContext.getSystemService(PermissionManager.class); } return mPermissionManager; } } @Override public int getUserId() { Loading Loading @@ -851,7 +836,6 @@ public class ApplicationPackageManager extends PackageManager { */ @Override public String getPermissionControllerPackageName() { synchronized (mLock) { if (mPermissionsControllerPackageName == null) { try { mPermissionsControllerPackageName = mPM.getPermissionControllerPackageName(); Loading @@ -861,7 +845,6 @@ public class ApplicationPackageManager extends PackageManager { } return mPermissionsControllerPackageName; } } /** * @hide Loading Loading @@ -3235,7 +3218,6 @@ public class ApplicationPackageManager extends PackageManager { @Override public PackageInstaller getPackageInstaller() { synchronized (mLock) { if (mInstaller == null) { try { mInstaller = new PackageInstaller(mPM.getPackageInstaller(), Loading @@ -3246,7 +3228,6 @@ public class ApplicationPackageManager extends PackageManager { } return mInstaller; } } @Override public boolean isPackageAvailable(String packageName) { Loading Loading @@ -3583,7 +3564,6 @@ public class ApplicationPackageManager extends PackageManager { @Override public ArtManager getArtManager() { synchronized (mLock) { if (mArtManager == null) { try { mArtManager = new ArtManager(mContext, mPM.getArtManager()); Loading @@ -3593,7 +3573,6 @@ public class ApplicationPackageManager extends PackageManager { } return mArtManager; } } @Override public String getDefaultTextClassifierPackageName() { Loading services/core/java/com/android/server/pm/PackageManagerService.java +5 −0 Original line number Diff line number Diff line Loading @@ -6692,6 +6692,11 @@ public class PackageManagerService extends IPackageManager.Stub @Override public IPackageInstaller getPackageInstaller() { // Return installer service for internal calls. if (PackageManagerServiceUtils.isSystemOrRoot()) { return mInstallerService; } // Return null for InstantApps. if (getInstantAppPackageName(Binder.getCallingUid()) != null) { return null; } Loading services/core/java/com/android/server/pm/PackageManagerServiceUtils.java +9 −2 Original line number Diff line number Diff line Loading @@ -1249,6 +1249,14 @@ public class PackageManagerServiceUtils { } } /** * Check if the Binder caller is system UID or root's UID. */ public static boolean isSystemOrRoot() { final int uid = Binder.getCallingUid(); return uid == Process.SYSTEM_UID || uid == Process.ROOT_UID; } /** * Enforces that only the system UID or root's UID can call a method exposed * via Binder. Loading @@ -1257,8 +1265,7 @@ public class PackageManagerServiceUtils { * @throws SecurityException if the caller is not system or root */ public static void enforceSystemOrRoot(String message) { final int uid = Binder.getCallingUid(); if (uid != Process.SYSTEM_UID && uid != Process.ROOT_UID) { if (!isSystemOrRoot()) { throw new SecurityException(message); } } Loading Loading
core/java/android/app/ApplicationPackageManager.java +34 −55 Original line number Diff line number Diff line Loading @@ -165,51 +165,36 @@ public class ApplicationPackageManager extends PackageManager { public static final String PERMISSION_CONTROLLER_RESOURCE_PACKAGE = "com.android.permissioncontroller"; private final Object mLock = new Object(); @GuardedBy("mLock") private UserManager mUserManager; @GuardedBy("mLock") private PermissionManager mPermissionManager; @GuardedBy("mLock") private PackageInstaller mInstaller; @GuardedBy("mLock") private ArtManager mArtManager; @GuardedBy("mLock") private DevicePolicyManager mDevicePolicyManager; private volatile UserManager mUserManager; private volatile PermissionManager mPermissionManager; private volatile PackageInstaller mInstaller; private volatile ArtManager mArtManager; private volatile DevicePolicyManager mDevicePolicyManager; private volatile String mPermissionsControllerPackageName; @GuardedBy("mDelegates") private final ArrayList<MoveCallbackDelegate> mDelegates = new ArrayList<>(); @GuardedBy("mLock") private String mPermissionsControllerPackageName; UserManager getUserManager() { synchronized (mLock) { if (mUserManager == null) { mUserManager = UserManager.get(mContext); } return mUserManager; } } DevicePolicyManager getDevicePolicyManager() { synchronized (mLock) { if (mDevicePolicyManager == null) { mDevicePolicyManager = mContext.getSystemService(DevicePolicyManager.class); } return mDevicePolicyManager; } } private PermissionManager getPermissionManager() { synchronized (mLock) { if (mPermissionManager == null) { mPermissionManager = mContext.getSystemService(PermissionManager.class); } return mPermissionManager; } } @Override public int getUserId() { Loading Loading @@ -851,7 +836,6 @@ public class ApplicationPackageManager extends PackageManager { */ @Override public String getPermissionControllerPackageName() { synchronized (mLock) { if (mPermissionsControllerPackageName == null) { try { mPermissionsControllerPackageName = mPM.getPermissionControllerPackageName(); Loading @@ -861,7 +845,6 @@ public class ApplicationPackageManager extends PackageManager { } return mPermissionsControllerPackageName; } } /** * @hide Loading Loading @@ -3235,7 +3218,6 @@ public class ApplicationPackageManager extends PackageManager { @Override public PackageInstaller getPackageInstaller() { synchronized (mLock) { if (mInstaller == null) { try { mInstaller = new PackageInstaller(mPM.getPackageInstaller(), Loading @@ -3246,7 +3228,6 @@ public class ApplicationPackageManager extends PackageManager { } return mInstaller; } } @Override public boolean isPackageAvailable(String packageName) { Loading Loading @@ -3583,7 +3564,6 @@ public class ApplicationPackageManager extends PackageManager { @Override public ArtManager getArtManager() { synchronized (mLock) { if (mArtManager == null) { try { mArtManager = new ArtManager(mContext, mPM.getArtManager()); Loading @@ -3593,7 +3573,6 @@ public class ApplicationPackageManager extends PackageManager { } return mArtManager; } } @Override public String getDefaultTextClassifierPackageName() { Loading
services/core/java/com/android/server/pm/PackageManagerService.java +5 −0 Original line number Diff line number Diff line Loading @@ -6692,6 +6692,11 @@ public class PackageManagerService extends IPackageManager.Stub @Override public IPackageInstaller getPackageInstaller() { // Return installer service for internal calls. if (PackageManagerServiceUtils.isSystemOrRoot()) { return mInstallerService; } // Return null for InstantApps. if (getInstantAppPackageName(Binder.getCallingUid()) != null) { return null; } Loading
services/core/java/com/android/server/pm/PackageManagerServiceUtils.java +9 −2 Original line number Diff line number Diff line Loading @@ -1249,6 +1249,14 @@ public class PackageManagerServiceUtils { } } /** * Check if the Binder caller is system UID or root's UID. */ public static boolean isSystemOrRoot() { final int uid = Binder.getCallingUid(); return uid == Process.SYSTEM_UID || uid == Process.ROOT_UID; } /** * Enforces that only the system UID or root's UID can call a method exposed * via Binder. Loading @@ -1257,8 +1265,7 @@ public class PackageManagerServiceUtils { * @throws SecurityException if the caller is not system or root */ public static void enforceSystemOrRoot(String message) { final int uid = Binder.getCallingUid(); if (uid != Process.SYSTEM_UID && uid != Process.ROOT_UID) { if (!isSystemOrRoot()) { throw new SecurityException(message); } } Loading