Add in sandbox UIDs when configuring VPN.

SDK sandboxes that belong to an application should follow the same VPN
configuration that their corresponding app does.

Bug: 225317905
Test: atest VpnTest
Change-Id: I634f47a013fa2e42908d963fcd0634778298fee5
This commit is contained in:
Martijn Coenen
2022-04-20 07:37:59 +00:00
parent 54a348cf84
commit 55c261ade6

View File

@@ -1533,11 +1533,17 @@ public class Vpn {
}
// Note: Return type guarantees results are deduped and sorted, which callers require.
// This method also adds the SDK sandbox UIDs corresponding to the applications by default,
// since apps are generally not aware of them, yet they should follow the VPN configuration
// of the app they belong to.
private SortedSet<Integer> getAppsUids(List<String> packageNames, int userId) {
SortedSet<Integer> uids = new TreeSet<>();
for (String app : packageNames) {
int uid = getAppUid(app, userId);
if (uid != -1) uids.add(uid);
if (Process.isApplicationUid(uid)) {
uids.add(Process.toSdkSandboxUid(uid));
}
}
return uids;
}