From 10a48e101aaf232df93cb5c1e325c7794beac1c6 Mon Sep 17 00:00:00 2001 From: Rhed Jao Date: Mon, 11 Jul 2022 11:58:13 +0800 Subject: [PATCH] Enforce cross user permission to queryContentProviders api The cl fixes the api allowing application to query providers installed in other user without holding cross user permission if the given process name is not null. Bug: 237405034 Test: atest CrossUserPackageVisibilityTests Change-Id: I79aa15de7599aadf6f4e0ce7ce7885ba7effb5cb --- services/core/java/com/android/server/pm/ComputerEngine.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/services/core/java/com/android/server/pm/ComputerEngine.java b/services/core/java/com/android/server/pm/ComputerEngine.java index 7e16925195f57..63c25ea520f72 100644 --- a/services/core/java/com/android/server/pm/ComputerEngine.java +++ b/services/core/java/com/android/server/pm/ComputerEngine.java @@ -5008,6 +5008,8 @@ public class ComputerEngine implements Computer { final int callingUid = Binder.getCallingUid(); final int userId = processName != null ? UserHandle.getUserId(uid) : UserHandle.getCallingUserId(); + enforceCrossUserPermission(callingUid, userId, false /* requireFullPermission */, + false /* checkShell */, "queryContentProviders"); if (!mUserManager.exists(userId)) return ParceledListSlice.emptyList(); flags = updateFlagsForComponent(flags, userId); ArrayList finalList = null;