Change NetworkCapabilties administrator UIDs to be stored as int[].

NetworkCapabilities#mAdministratorUids is used to track the UIDs that
are administrators of the given Network. This value was previously
stored as List<Integer>. However, general Android API Council guidelines
recommend using Arrays for primitive values. In order to be consistent
with the guidelines, updating the field to use an Array.

Bug: 147903575
Test: atest FrameworksNetTests
Change-Id: I2652a5b0f276b8944454af5cb4b1383a3e054cfa
Merged-In: I2652a5b0f276b8944454af5cb4b1383a3e054cfa
This commit is contained in:
Cody Kesting
2020-03-16 18:15:28 -07:00
parent 5596ba1619
commit 5ab1f55d1f
4 changed files with 25 additions and 37 deletions

View File

@@ -1668,7 +1668,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
if (newNc.getNetworkSpecifier() != null) {
newNc.setNetworkSpecifier(newNc.getNetworkSpecifier().redact());
}
newNc.setAdministratorUids(Collections.EMPTY_LIST);
newNc.setAdministratorUids(new int[0]);
return newNc;
}
@@ -1729,7 +1729,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
nc.setSingleUid(callerUid);
}
nc.setRequestorUidAndPackageName(callerUid, callerPackageName);
nc.setAdministratorUids(Collections.EMPTY_LIST);
nc.setAdministratorUids(new int[0]);
// Clear owner UID; this can never come from an app.
nc.setOwnerUid(INVALID_UID);
@@ -7857,7 +7857,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
private void clearNetworkCapabilitiesUids(@NonNull NetworkCapabilities nc) {
nc.setUids(null);
nc.setAdministratorUids(Collections.EMPTY_LIST);
nc.setAdministratorUids(new int[0]);
nc.setOwnerUid(Process.INVALID_UID);
}
@@ -7904,8 +7904,9 @@ public class ConnectivityService extends IConnectivityManager.Stub
}
// Administrator UIDs also contains the Owner UID
if (nai.networkCapabilities.getAdministratorUids().contains(callbackUid)) {
return true;
final int[] administratorUids = nai.networkCapabilities.getAdministratorUids();
for (final int uid : administratorUids) {
if (uid == callbackUid) return true;
}
return false;

View File

@@ -53,7 +53,6 @@ import java.net.InterfaceAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.concurrent.atomic.AtomicInteger;
@@ -250,7 +249,7 @@ class TestNetworkService extends ITestNetworkManager.Stub {
nc.addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_SUSPENDED);
nc.addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_RESTRICTED);
nc.setNetworkSpecifier(new StringNetworkSpecifier(iface));
nc.setAdministratorUids(intArrayToList(administratorUids));
nc.setAdministratorUids(administratorUids);
if (!isMetered) {
nc.addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_METERED);
}
@@ -293,14 +292,6 @@ class TestNetworkService extends ITestNetworkManager.Stub {
return new TestNetworkAgent(looper, context, ni, nc, lp, callingUid, binder);
}
private List<Integer> intArrayToList(@NonNull int[] array) {
final List<Integer> list = new ArrayList<>(array.length);
for (final int i : array) {
list.add(i);
}
return list;
}
/**
* Sets up a Network with extremely limited privileges, guarded by the MANAGE_TEST_NETWORKS
* permission.