diff --git a/core/java/com/android/server/SystemConfig.java b/core/java/com/android/server/SystemConfig.java index b1846d2402ddd..cc7e9d95b4f87 100644 --- a/core/java/com/android/server/SystemConfig.java +++ b/core/java/com/android/server/SystemConfig.java @@ -435,15 +435,15 @@ public class SystemConfig { } /** Get privapp permission allowlist for an apk-in-apex. */ - public ArraySet getApexPrivAppPermissions(String module, String packageName) { - return mApexPrivAppPermissions.getOrDefault(module, EMPTY_PERMISSIONS) - .get(packageName); + public ArraySet getApexPrivAppPermissions(String apexName, String apkPackageName) { + return mApexPrivAppPermissions.getOrDefault(apexName, EMPTY_PERMISSIONS) + .get(apkPackageName); } /** Get privapp permissions denylist for an apk-in-apex. */ - public ArraySet getApexPrivAppDenyPermissions(String module, String packageName) { - return mApexPrivAppDenyPermissions.getOrDefault(module, EMPTY_PERMISSIONS) - .get(packageName); + public ArraySet getApexPrivAppDenyPermissions(String apexName, String apkPackageName) { + return mApexPrivAppDenyPermissions.getOrDefault(apexName, EMPTY_PERMISSIONS) + .get(apkPackageName); } public ArraySet getVendorPrivAppPermissions(String packageName) { diff --git a/services/core/java/com/android/server/pm/PackageManagerShellCommand.java b/services/core/java/com/android/server/pm/PackageManagerShellCommand.java index b92f51b392f92..16b0f4dbd2091 100644 --- a/services/core/java/com/android/server/pm/PackageManagerShellCommand.java +++ b/services/core/java/com/android/server/pm/PackageManagerShellCommand.java @@ -2535,8 +2535,10 @@ class PackageManagerShellCommand extends ShellCommand { privAppPermissions = SystemConfig.getInstance() .getSystemExtPrivAppPermissions(pkg); } else if (isApexApp(pkg)) { + final String apexName = ApexManager.getInstance().getApexModuleNameForPackageName( + getApexPackageNameContainingPackage(pkg)); privAppPermissions = SystemConfig.getInstance() - .getApexPrivAppPermissions(getApexPackageNameContainingPackage(pkg), pkg); + .getApexPrivAppPermissions(apexName, pkg); } else { privAppPermissions = SystemConfig.getInstance().getPrivAppPermissions(pkg); } @@ -2562,8 +2564,10 @@ class PackageManagerShellCommand extends ShellCommand { privAppPermissions = SystemConfig.getInstance() .getSystemExtPrivAppDenyPermissions(pkg); } else if (isApexApp(pkg)) { + final String apexName = ApexManager.getInstance().getApexModuleNameForPackageName( + getApexPackageNameContainingPackage(pkg)); privAppPermissions = SystemConfig.getInstance() - .getApexPrivAppDenyPermissions(getApexPackageNameContainingPackage(pkg), pkg); + .getApexPrivAppDenyPermissions(apexName, pkg); } else { privAppPermissions = SystemConfig.getInstance().getPrivAppDenyPermissions(pkg); } 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 90842619c31ec..d0609307e6a84 100644 --- a/services/core/java/com/android/server/pm/permission/PermissionManagerServiceImpl.java +++ b/services/core/java/com/android/server/pm/permission/PermissionManagerServiceImpl.java @@ -3291,10 +3291,13 @@ public class PermissionManagerServiceImpl implements PermissionManagerServiceInt } else if (pkg.isSystemExt()) { permissions = systemConfig.getSystemExtPrivAppPermissions(pkg.getPackageName()); } else if (containingApexPackageName != null) { + final ApexManager apexManager = ApexManager.getInstance(); + final String apexName = apexManager.getApexModuleNameForPackageName( + containingApexPackageName); final Set privAppPermissions = systemConfig.getPrivAppPermissions( pkg.getPackageName()); final Set apexPermissions = systemConfig.getApexPrivAppPermissions( - containingApexPackageName, pkg.getPackageName()); + apexName, pkg.getPackageName()); if (privAppPermissions != null) { // TODO(andreionea): Remove check as soon as all apk-in-apex // permission allowlists are migrated.