From 24d9d7d4c24f7ec7c054c1dd5f60ee6030cf6a34 Mon Sep 17 00:00:00 2001 From: Hai Zhang Date: Wed, 28 Apr 2021 00:48:21 +0000 Subject: [PATCH] Filter package visibility in getPermissionInfo(). Bug: 183122164 Test: manual Change-Id: I5019de75b19f9f53ab71dec36cf01d1aa887936a --- .../pm/permission/PermissionManagerService.java | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) 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..33dc7a0b2eecb 100644 --- a/services/core/java/com/android/server/pm/permission/PermissionManagerService.java +++ b/services/core/java/com/android/server/pm/permission/PermissionManagerService.java @@ -531,16 +531,26 @@ public class PermissionManagerService extends IPermissionManager.Stub { if (mPackageManagerInt.getInstantAppPackageName(callingUid) != null) { return null; } + final AndroidPackage opPackage = mPackageManagerInt.getPackage(opPackageName); final int targetSdkVersion = getPermissionInfoCallingTargetSdkVersion(opPackage, callingUid); + final PermissionInfo permissionInfo; synchronized (mLock) { final Permission bp = mRegistry.getPermission(permName); if (bp == null) { return null; } - return bp.generatePermissionInfo(flags, targetSdkVersion); + permissionInfo = bp.generatePermissionInfo(flags, targetSdkVersion); } + + final int callingUserId = UserHandle.getUserId(callingUid); + if (mPackageManagerInt.filterAppAccess(permissionInfo.packageName, callingUid, + callingUserId)) { + EventLog.writeEvent(0x534e4554, "183122164", callingUid, permName); + return null; + } + return permissionInfo; } private int getPermissionInfoCallingTargetSdkVersion(@Nullable AndroidPackage pkg, int uid) {