From 47560813295370d11d2955addf00380405da58dc Mon Sep 17 00:00:00 2001 From: Hai Zhang Date: Wed, 28 Apr 2021 00:46:45 +0000 Subject: [PATCH] Filter package visibility in queryPermissionsByGroup(). Bug: 183121510 Test: manual Change-Id: I48a0b62be696174bca22b7de003849baa83c0534 --- .../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..8067eee70b594 100644 --- a/services/core/java/com/android/server/pm/permission/PermissionManagerService.java +++ b/services/core/java/com/android/server/pm/permission/PermissionManagerService.java @@ -564,18 +564,23 @@ public class PermissionManagerService extends IPermissionManager.Stub { if (mPackageManagerInt.getInstantAppPackageName(callingUid) != null) { return null; } + + final List out = new ArrayList<>(10); synchronized (mLock) { if (groupName != null && mRegistry.getPermissionGroup(groupName) == null) { return null; } - final ArrayList out = new ArrayList(10); for (Permission bp : mRegistry.getPermissions()) { if (Objects.equals(bp.getGroup(), groupName)) { out.add(bp.generatePermissionInfo(flags)); } } - return new ParceledListSlice<>(out); } + + final int callingUserId = UserHandle.getUserId(callingUid); + out.removeIf(it -> mPackageManagerInt.filterAppAccess(it.packageName, callingUid, + callingUserId)); + return new ParceledListSlice<>(out); } @Override