From 21fbe81e4c3189f586b2d40135ccc631fa57f0af Mon Sep 17 00:00:00 2001 From: Chiachang Wang Date: Thu, 4 Feb 2021 14:55:45 +0800 Subject: [PATCH] Create new system API in UserHandle to get uid For the incoming connectivity mainline, it need to compute the intersection of a set of uids and appIds for the permission control. As @UserIdInt values are internal implementation details of the OS, any mainline modules should use strongly-typed UserHandle arguments. Thus, create a new API that accepts UserHandle and appId to get the computed uid. Bug: 170598012 Test: atest FrameworksNetTests Change-Id: I046546d2c5c76eac7a251e63e4234776975bf2bc --- .../android/server/connectivity/PermissionMonitor.java | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/services/core/java/com/android/server/connectivity/PermissionMonitor.java b/services/core/java/com/android/server/connectivity/PermissionMonitor.java index d507b5f82b..8d21f6f0f5 100644 --- a/services/core/java/com/android/server/connectivity/PermissionMonitor.java +++ b/services/core/java/com/android/server/connectivity/PermissionMonitor.java @@ -265,7 +265,10 @@ public class PermissionMonitor implements PackageManagerInternal.PackageListObse for (Entry app : apps.entrySet()) { List list = app.getValue() ? system : network; for (int user : users) { - list.add(UserHandle.getUid(user, app.getKey())); + final UserHandle handle = UserHandle.of(user); + if (handle == null) continue; + + list.add(UserHandle.getUid(handle, app.getKey())); } } try { @@ -550,7 +553,10 @@ public class PermissionMonitor implements PackageManagerInternal.PackageListObse for (UidRange range : ranges) { for (int userId = range.getStartUser(); userId <= range.getEndUser(); userId++) { for (int appId : appIds) { - final int uid = UserHandle.getUid(userId, appId); + final UserHandle handle = UserHandle.of(userId); + if (handle == null) continue; + + final int uid = UserHandle.getUid(handle, appId); if (range.contains(uid)) { result.add(uid); }