Merge "Force specifying sanitized/not sanitized in caps from agent"

This commit is contained in:
Paul Hu
2022-08-09 09:16:21 +00:00
committed by Gerrit Code Review
3 changed files with 98 additions and 44 deletions

View File

@@ -241,6 +241,7 @@ import android.net.ConnectivitySettingsManager;
import android.net.ConnectivityThread;
import android.net.DataStallReportParcelable;
import android.net.EthernetManager;
import android.net.EthernetNetworkSpecifier;
import android.net.IConnectivityDiagnosticsCallback;
import android.net.IDnsResolver;
import android.net.INetd;
@@ -15699,6 +15700,45 @@ public class ConnectivityServiceTest {
mCm.unregisterNetworkCallback(cb);
}
@Test
public void testSanitizedCapabilitiesFromAgentDoesNotMutateArgument()
throws Exception {
// This NetworkCapabilities builds an usual object to maximize the chance that this requires
// sanitization, so we have a high chance to detect any changes to the original.
final NetworkCapabilities unsanitized = new NetworkCapabilities.Builder()
.withoutDefaultCapabilities()
.addTransportType(TRANSPORT_WIFI)
.addCapability(NET_CAPABILITY_INTERNET)
.setOwnerUid(12345)
.setAdministratorUids(new int[] {12345, 23456, 34567})
.setLinkUpstreamBandwidthKbps(20)
.setLinkDownstreamBandwidthKbps(10)
.setNetworkSpecifier(new EthernetNetworkSpecifier("foobar"))
.setTransportInfo(new WifiInfo.Builder().setBssid("AA:AA:AA:AA:AA:AA").build())
.setSignalStrength(-75)
.setSsid("SSID1")
.setRequestorUid(98765)
.setRequestorPackageName("TestPackage")
.setSubscriptionIds(Collections.singleton(Process.myUid()))
.setUids(UidRange.toIntRanges(uidRangesForUids(
UserHandle.getUid(PRIMARY_USER, 10100),
UserHandle.getUid(SECONDARY_USER, 10101),
UserHandle.getUid(TERTIARY_USER, 10043))))
.setAllowedUids(Set.of(45678, 56789, 65432))
.setUnderlyingNetworks(List.of(new Network(99999)))
.build();
final NetworkCapabilities copyOfUnsanitized = new NetworkCapabilities(unsanitized);
final NetworkInfo info = new NetworkInfo(TYPE_MOBILE, TelephonyManager.NETWORK_TYPE_LTE,
ConnectivityManager.getNetworkTypeName(TYPE_MOBILE),
TelephonyManager.getNetworkTypeName(TelephonyManager.NETWORK_TYPE_LTE));
final NetworkAgentInfo agent = fakeNai(unsanitized, info);
agent.setDeclaredCapabilities(unsanitized);
final NetworkCapabilities sanitized = agent.getDeclaredCapabilitiesSanitized(
null /* carrierPrivilegeAuthenticator */);
assertEquals(copyOfUnsanitized, unsanitized);
assertNotEquals(sanitized, unsanitized);
}
/**
* Validate request counts are counted accurately on setProfileNetworkPreference on set/replace.
*/