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:
@@ -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;
|
||||
|
||||
@@ -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.
|
||||
|
||||
Reference in New Issue
Block a user