Loading core/java/android/content/pm/PackageManager.java +1 −0 Original line number Diff line number Diff line Loading @@ -764,6 +764,7 @@ public abstract class PackageManager { MATCH_DISABLED_UNTIL_USED_COMPONENTS, MATCH_SYSTEM_ONLY, MATCH_FACTORY_ONLY, MATCH_ANY_USER, MATCH_DEBUG_TRIAGED_MISSING, MATCH_INSTANT, MATCH_APEX, Loading services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java +1 −1 Original line number Diff line number Diff line Loading @@ -490,7 +490,7 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub mMainHandler, context, new PolicyWarningUIController.NotificationController(context)); mSecurityPolicy = new AccessibilitySecurityPolicy(policyWarningUIController, mContext, this); this, LocalServices.getService(PackageManagerInternal.class)); mA11yWindowManager = new AccessibilityWindowManager(mLock, mMainHandler, mWindowManagerService, this, mSecurityPolicy, this, mTraceManager); mA11yDisplayListener = new AccessibilityDisplayListener(mContext, mMainHandler); Loading services/accessibility/java/com/android/server/accessibility/AccessibilitySecurityPolicy.java +7 −5 Original line number Diff line number Diff line Loading @@ -29,6 +29,7 @@ import android.appwidget.AppWidgetManagerInternal; import android.content.ComponentName; import android.content.Context; import android.content.pm.PackageManager; import android.content.pm.PackageManagerInternal; import android.content.pm.ResolveInfo; import android.content.pm.ServiceInfo; import android.content.pm.UserInfo; Loading Loading @@ -99,6 +100,7 @@ public class AccessibilitySecurityPolicy { private final Context mContext; private final PackageManager mPackageManager; private final PackageManagerInternal mPackageManagerInternal; private final UserManager mUserManager; private final AppOpsManager mAppOpsManager; private final AccessibilityUserManager mAccessibilityUserManager; Loading @@ -116,10 +118,12 @@ public class AccessibilitySecurityPolicy { */ public AccessibilitySecurityPolicy(PolicyWarningUIController policyWarningUIController, @NonNull Context context, @NonNull AccessibilityUserManager a11yUserManager) { @NonNull AccessibilityUserManager a11yUserManager, @NonNull PackageManagerInternal packageManagerInternal) { mContext = context; mAccessibilityUserManager = a11yUserManager; mPackageManager = mContext.getPackageManager(); mPackageManagerInternal = packageManagerInternal; mUserManager = (UserManager) mContext.getSystemService(Context.USER_SERVICE); mAppOpsManager = (AppOpsManager) context.getSystemService(Context.APP_OPS_SERVICE); mPolicyWarningUIController = policyWarningUIController; Loading Loading @@ -515,10 +519,8 @@ public class AccessibilitySecurityPolicy { try { // Since we treat calls from a profile as if made by its parent, using // MATCH_ANY_USER to query the uid of the given package name. return uid == mPackageManager.getPackageUidAsUser( packageName, PackageManager.MATCH_ANY_USER, UserHandle.getUserId(uid)); } catch (PackageManager.NameNotFoundException e) { return false; return mPackageManagerInternal.isSameApp(packageName, PackageManager.MATCH_ANY_USER, uid, UserHandle.getUserId(uid)); } finally { Binder.restoreCallingIdentity(token); } Loading services/core/java/android/content/pm/PackageManagerInternal.java +9 −1 Original line number Diff line number Diff line Loading @@ -153,17 +153,25 @@ public abstract class PackageManagerInternal { public abstract boolean isPermissionsReviewRequired(String packageName, int userId); /** * Variant of {@link #isSameApp(String, long, int, int)} with no flags. * @see #isSameApp(String, long, int, int) */ public abstract boolean isSameApp(String packageName, int callingUid, int userId); /** * Gets whether a given package name belongs to the calling uid. If the calling uid is an * {@link Process#isSdkSandboxUid(int) sdk sandbox uid}, checks whether the package name is * equal to {@link PackageManager#getSdkSandboxPackageName()}. * * @param packageName The package name to check. * @param flags The PackageInfoFlagsBits flags to use during uid lookup. * @param callingUid The calling uid. * @param userId The user under which to check. * @return True if the package name belongs to the calling uid. */ public abstract boolean isSameApp(String packageName, int callingUid, int userId); public abstract boolean isSameApp(String packageName, @PackageManager.PackageInfoFlagsBits long flags, int callingUid, int userId); /** * Retrieve all of the information we know about a particular package/application. Loading services/core/java/com/android/server/pm/PackageManagerService.java +7 −1 Original line number Diff line number Diff line Loading @@ -6843,6 +6843,12 @@ public class PackageManagerService implements PackageSender, TestUtilityService @Override public boolean isSameApp(@Nullable String packageName, int callingUid, int userId) { return isSameApp(packageName, /*flags=*/0, callingUid, userId); } @Override public boolean isSameApp(@Nullable String packageName, @PackageManager.PackageInfoFlagsBits long flags, int callingUid, int userId) { if (packageName == null) { return false; } Loading @@ -6851,7 +6857,7 @@ public class PackageManagerService implements PackageSender, TestUtilityService return packageName.equals(mRequiredSdkSandboxPackage); } Computer snapshot = snapshot(); int uid = snapshot.getPackageUid(packageName, 0, userId); int uid = snapshot.getPackageUid(packageName, flags, userId); return UserHandle.isSameApp(uid, callingUid); } Loading Loading
core/java/android/content/pm/PackageManager.java +1 −0 Original line number Diff line number Diff line Loading @@ -764,6 +764,7 @@ public abstract class PackageManager { MATCH_DISABLED_UNTIL_USED_COMPONENTS, MATCH_SYSTEM_ONLY, MATCH_FACTORY_ONLY, MATCH_ANY_USER, MATCH_DEBUG_TRIAGED_MISSING, MATCH_INSTANT, MATCH_APEX, Loading
services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java +1 −1 Original line number Diff line number Diff line Loading @@ -490,7 +490,7 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub mMainHandler, context, new PolicyWarningUIController.NotificationController(context)); mSecurityPolicy = new AccessibilitySecurityPolicy(policyWarningUIController, mContext, this); this, LocalServices.getService(PackageManagerInternal.class)); mA11yWindowManager = new AccessibilityWindowManager(mLock, mMainHandler, mWindowManagerService, this, mSecurityPolicy, this, mTraceManager); mA11yDisplayListener = new AccessibilityDisplayListener(mContext, mMainHandler); Loading
services/accessibility/java/com/android/server/accessibility/AccessibilitySecurityPolicy.java +7 −5 Original line number Diff line number Diff line Loading @@ -29,6 +29,7 @@ import android.appwidget.AppWidgetManagerInternal; import android.content.ComponentName; import android.content.Context; import android.content.pm.PackageManager; import android.content.pm.PackageManagerInternal; import android.content.pm.ResolveInfo; import android.content.pm.ServiceInfo; import android.content.pm.UserInfo; Loading Loading @@ -99,6 +100,7 @@ public class AccessibilitySecurityPolicy { private final Context mContext; private final PackageManager mPackageManager; private final PackageManagerInternal mPackageManagerInternal; private final UserManager mUserManager; private final AppOpsManager mAppOpsManager; private final AccessibilityUserManager mAccessibilityUserManager; Loading @@ -116,10 +118,12 @@ public class AccessibilitySecurityPolicy { */ public AccessibilitySecurityPolicy(PolicyWarningUIController policyWarningUIController, @NonNull Context context, @NonNull AccessibilityUserManager a11yUserManager) { @NonNull AccessibilityUserManager a11yUserManager, @NonNull PackageManagerInternal packageManagerInternal) { mContext = context; mAccessibilityUserManager = a11yUserManager; mPackageManager = mContext.getPackageManager(); mPackageManagerInternal = packageManagerInternal; mUserManager = (UserManager) mContext.getSystemService(Context.USER_SERVICE); mAppOpsManager = (AppOpsManager) context.getSystemService(Context.APP_OPS_SERVICE); mPolicyWarningUIController = policyWarningUIController; Loading Loading @@ -515,10 +519,8 @@ public class AccessibilitySecurityPolicy { try { // Since we treat calls from a profile as if made by its parent, using // MATCH_ANY_USER to query the uid of the given package name. return uid == mPackageManager.getPackageUidAsUser( packageName, PackageManager.MATCH_ANY_USER, UserHandle.getUserId(uid)); } catch (PackageManager.NameNotFoundException e) { return false; return mPackageManagerInternal.isSameApp(packageName, PackageManager.MATCH_ANY_USER, uid, UserHandle.getUserId(uid)); } finally { Binder.restoreCallingIdentity(token); } Loading
services/core/java/android/content/pm/PackageManagerInternal.java +9 −1 Original line number Diff line number Diff line Loading @@ -153,17 +153,25 @@ public abstract class PackageManagerInternal { public abstract boolean isPermissionsReviewRequired(String packageName, int userId); /** * Variant of {@link #isSameApp(String, long, int, int)} with no flags. * @see #isSameApp(String, long, int, int) */ public abstract boolean isSameApp(String packageName, int callingUid, int userId); /** * Gets whether a given package name belongs to the calling uid. If the calling uid is an * {@link Process#isSdkSandboxUid(int) sdk sandbox uid}, checks whether the package name is * equal to {@link PackageManager#getSdkSandboxPackageName()}. * * @param packageName The package name to check. * @param flags The PackageInfoFlagsBits flags to use during uid lookup. * @param callingUid The calling uid. * @param userId The user under which to check. * @return True if the package name belongs to the calling uid. */ public abstract boolean isSameApp(String packageName, int callingUid, int userId); public abstract boolean isSameApp(String packageName, @PackageManager.PackageInfoFlagsBits long flags, int callingUid, int userId); /** * Retrieve all of the information we know about a particular package/application. Loading
services/core/java/com/android/server/pm/PackageManagerService.java +7 −1 Original line number Diff line number Diff line Loading @@ -6843,6 +6843,12 @@ public class PackageManagerService implements PackageSender, TestUtilityService @Override public boolean isSameApp(@Nullable String packageName, int callingUid, int userId) { return isSameApp(packageName, /*flags=*/0, callingUid, userId); } @Override public boolean isSameApp(@Nullable String packageName, @PackageManager.PackageInfoFlagsBits long flags, int callingUid, int userId) { if (packageName == null) { return false; } Loading @@ -6851,7 +6857,7 @@ public class PackageManagerService implements PackageSender, TestUtilityService return packageName.equals(mRequiredSdkSandboxPackage); } Computer snapshot = snapshot(); int uid = snapshot.getPackageUid(packageName, 0, userId); int uid = snapshot.getPackageUid(packageName, flags, userId); return UserHandle.isSameApp(uid, callingUid); } Loading