Merge "Force specifying sanitized/not sanitized in caps from agent" am: 1896d713cc

Original change: https://android-review.googlesource.com/c/platform/packages/modules/Connectivity/+/2001256

Change-Id: Idb21a047bbf6566dcdbb603828e5460aaaab983c
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Paul Hu
2022-08-09 09:35:31 +00:00
committed by Automerger Merge Worker
3 changed files with 98 additions and 44 deletions

View File

@@ -242,6 +242,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;
@@ -15703,6 +15704,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.
*/