Loading services/core/java/com/android/server/pm/PackageManagerService.java +7 −1 Original line number Diff line number Diff line Loading @@ -5217,7 +5217,13 @@ public class PackageManagerService extends IPackageManager.Stub @Override public int checkUidPermission(String permName, int uid) { return mPermissionManager.checkUidPermission(permName, uid, getCallingUid()); synchronized (mPackages) { final String[] packageNames = getPackagesForUid(uid); final PackageParser.Package pkg = (packageNames != null && packageNames.length > 0) ? mPackages.get(packageNames[0]) : null; return mPermissionManager.checkUidPermission(permName, pkg, uid, getCallingUid()); } } @Override services/core/java/com/android/server/pm/permission/PermissionManagerInternal.java +2 −1 Original line number Diff line number Diff line Loading @@ -146,7 +146,8 @@ public abstract class PermissionManagerInternal { public abstract int checkPermission(@NonNull String permName, @NonNull String packageName, int callingUid, int userId); public abstract int checkUidPermission(String permName, int uid, int callingUid); public abstract int checkUidPermission(@NonNull String permName, @Nullable PackageParser.Package pkg, int uid, int callingUid); /** * Enforces the request is from the system or an app that has INTERACT_ACROSS_USERS Loading services/core/java/com/android/server/pm/permission/PermissionManagerService.java +8 −21 Original line number Diff line number Diff line Loading @@ -242,7 +242,8 @@ public class PermissionManagerService { return PackageManager.PERMISSION_DENIED; } private int checkUidPermission(String permName, int uid, int callingUid) { private int checkUidPermission(String permName, PackageParser.Package pkg, int uid, int callingUid) { final int callingUserId = UserHandle.getUserId(callingUid); final boolean isCallerInstantApp = mPackageManagerInt.getInstantAppPackageName(callingUid) != null; Loading @@ -253,29 +254,14 @@ public class PermissionManagerService { return PackageManager.PERMISSION_DENIED; } final String[] packages = mContext.getPackageManager().getPackagesForUid(uid); if (packages != null && packages.length > 0) { PackageParser.Package pkg = null; for (String packageName : packages) { pkg = mPackageManagerInt.getPackage(packageName); if (pkg != null) { break; } } if (pkg == null) { Slog.e(TAG, "TODD: No package not found; UID: " + uid); Slog.e(TAG, "TODD: Packages: " + Arrays.toString(packages)); return PackageManager.PERMISSION_DENIED; } if (pkg.mSharedUserId != null) { if (isCallerInstantApp) { return PackageManager.PERMISSION_DENIED; } } else { if (mPackageManagerInt.filterAppAccess(pkg, callingUid, callingUserId)) { } else if (mPackageManagerInt.filterAppAccess(pkg, callingUid, callingUserId)) { return PackageManager.PERMISSION_DENIED; } } final PermissionsState permissionsState = ((PackageSetting) pkg.mExtras).getPermissionsState(); if (permissionsState.hasPermission(permName, userId)) { Loading Loading @@ -2068,8 +2054,9 @@ Slog.e(TAG, "TODD: Packages: " + Arrays.toString(packages)); permName, packageName, callingUid, userId); } @Override public int checkUidPermission(String permName, int uid, int callingUid) { return PermissionManagerService.this.checkUidPermission(permName, uid, callingUid); public int checkUidPermission(String permName, PackageParser.Package pkg, int uid, int callingUid) { return PermissionManagerService.this.checkUidPermission(permName, pkg, uid, callingUid); } @Override public PermissionGroupInfo getPermissionGroupInfo(String groupName, int flags, Loading Loading
services/core/java/com/android/server/pm/PackageManagerService.java +7 −1 Original line number Diff line number Diff line Loading @@ -5217,7 +5217,13 @@ public class PackageManagerService extends IPackageManager.Stub @Override public int checkUidPermission(String permName, int uid) { return mPermissionManager.checkUidPermission(permName, uid, getCallingUid()); synchronized (mPackages) { final String[] packageNames = getPackagesForUid(uid); final PackageParser.Package pkg = (packageNames != null && packageNames.length > 0) ? mPackages.get(packageNames[0]) : null; return mPermissionManager.checkUidPermission(permName, pkg, uid, getCallingUid()); } } @Override
services/core/java/com/android/server/pm/permission/PermissionManagerInternal.java +2 −1 Original line number Diff line number Diff line Loading @@ -146,7 +146,8 @@ public abstract class PermissionManagerInternal { public abstract int checkPermission(@NonNull String permName, @NonNull String packageName, int callingUid, int userId); public abstract int checkUidPermission(String permName, int uid, int callingUid); public abstract int checkUidPermission(@NonNull String permName, @Nullable PackageParser.Package pkg, int uid, int callingUid); /** * Enforces the request is from the system or an app that has INTERACT_ACROSS_USERS Loading
services/core/java/com/android/server/pm/permission/PermissionManagerService.java +8 −21 Original line number Diff line number Diff line Loading @@ -242,7 +242,8 @@ public class PermissionManagerService { return PackageManager.PERMISSION_DENIED; } private int checkUidPermission(String permName, int uid, int callingUid) { private int checkUidPermission(String permName, PackageParser.Package pkg, int uid, int callingUid) { final int callingUserId = UserHandle.getUserId(callingUid); final boolean isCallerInstantApp = mPackageManagerInt.getInstantAppPackageName(callingUid) != null; Loading @@ -253,29 +254,14 @@ public class PermissionManagerService { return PackageManager.PERMISSION_DENIED; } final String[] packages = mContext.getPackageManager().getPackagesForUid(uid); if (packages != null && packages.length > 0) { PackageParser.Package pkg = null; for (String packageName : packages) { pkg = mPackageManagerInt.getPackage(packageName); if (pkg != null) { break; } } if (pkg == null) { Slog.e(TAG, "TODD: No package not found; UID: " + uid); Slog.e(TAG, "TODD: Packages: " + Arrays.toString(packages)); return PackageManager.PERMISSION_DENIED; } if (pkg.mSharedUserId != null) { if (isCallerInstantApp) { return PackageManager.PERMISSION_DENIED; } } else { if (mPackageManagerInt.filterAppAccess(pkg, callingUid, callingUserId)) { } else if (mPackageManagerInt.filterAppAccess(pkg, callingUid, callingUserId)) { return PackageManager.PERMISSION_DENIED; } } final PermissionsState permissionsState = ((PackageSetting) pkg.mExtras).getPermissionsState(); if (permissionsState.hasPermission(permName, userId)) { Loading Loading @@ -2068,8 +2054,9 @@ Slog.e(TAG, "TODD: Packages: " + Arrays.toString(packages)); permName, packageName, callingUid, userId); } @Override public int checkUidPermission(String permName, int uid, int callingUid) { return PermissionManagerService.this.checkUidPermission(permName, uid, callingUid); public int checkUidPermission(String permName, PackageParser.Package pkg, int uid, int callingUid) { return PermissionManagerService.this.checkUidPermission(permName, pkg, uid, callingUid); } @Override public PermissionGroupInfo getPermissionGroupInfo(String groupName, int flags, Loading