From 8d701c3a8e3c96da41bf91a778788d603c58e7d5 Mon Sep 17 00:00:00 2001 From: Hai Zhang Date: Wed, 28 Apr 2021 00:51:43 +0000 Subject: [PATCH] Filter package visibility in getAllPermissionGroups(). Bug: 186113411 Test: manual Change-Id: Iede835dc2fd22fdbd22dcb2c8dff662d8ffc0221 --- .../server/pm/permission/PermissionManagerService.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/services/core/java/com/android/server/pm/permission/PermissionManagerService.java b/services/core/java/com/android/server/pm/permission/PermissionManagerService.java index 2d1178a3f116d..6e54c54e09730 100644 --- a/services/core/java/com/android/server/pm/permission/PermissionManagerService.java +++ b/services/core/java/com/android/server/pm/permission/PermissionManagerService.java @@ -498,13 +498,18 @@ public class PermissionManagerService extends IPermissionManager.Stub { if (mPackageManagerInt.getInstantAppPackageName(callingUid) != null) { return ParceledListSlice.emptyList(); } + + final List out = new ArrayList<>(); synchronized (mLock) { - final List out = new ArrayList<>(); for (ParsedPermissionGroup pg : mRegistry.getPermissionGroups()) { out.add(PackageInfoUtils.generatePermissionGroupInfo(pg, flags)); } - return new ParceledListSlice<>(out); } + + final int callingUserId = UserHandle.getUserId(callingUid); + out.removeIf(it -> mPackageManagerInt.filterAppAccess(it.packageName, callingUid, + callingUserId)); + return new ParceledListSlice<>(out); }