diff options
4 files changed, 16 insertions, 5 deletions
diff --git a/services/core/java/com/android/server/VcnManagementService.java b/services/core/java/com/android/server/VcnManagementService.java index e2b6bd6ae360..d19899f03d71 100644 --- a/services/core/java/com/android/server/VcnManagementService.java +++ b/services/core/java/com/android/server/VcnManagementService.java @@ -489,7 +489,10 @@ public class VcnManagementService extends IVcnManagementService.Stub { // Check subscription is active first; much cheaper/faster check, and an app (currently) // cannot be carrier privileged for inactive subscriptions. - if (subMgr.isValidSlotIndex(info.getSimSlotIndex()) + final int simSlotIndex = info.getSimSlotIndex(); + final boolean isValidSlotIndex = + simSlotIndex >= 0 && simSlotIndex < telMgr.getActiveModemCount(); + if (isValidSlotIndex && telMgr.checkCarrierPrivilegesForPackage(pkgName) == TelephonyManager.CARRIER_PRIVILEGE_STATUS_HAS_ACCESS) { // TODO (b/173717728): Allow configuration for inactive, but manageable diff --git a/services/core/java/com/android/server/vcn/VcnGatewayConnection.java b/services/core/java/com/android/server/vcn/VcnGatewayConnection.java index 8d378a021f17..b5747828349e 100644 --- a/services/core/java/com/android/server/vcn/VcnGatewayConnection.java +++ b/services/core/java/com/android/server/vcn/VcnGatewayConnection.java @@ -177,6 +177,10 @@ public class VcnGatewayConnection extends StateMachine { /** Default number of parallel SAs requested */ static final int TUNNEL_AGGREGATION_SA_COUNT_MAX_DEFAULT = 1; + // The returned string of + // TelephonyManager#getNetworkTypeName(TelephonyManager.NETWORK_TYPE_UNKNOWN) + private static final String NETWORK_TYPE_STRING_UNKNOWN = "UNKNOWN"; + // Matches DataConnection.NETWORK_TYPE private constant, and magic string from // ConnectivityManager#getNetworkTypeName() @VisibleForTesting(visibility = Visibility.PRIVATE) @@ -1815,9 +1819,7 @@ public class VcnGatewayConnection extends StateMachine { .setLegacyType(ConnectivityManager.TYPE_MOBILE) .setLegacyTypeName(NETWORK_INFO_NETWORK_TYPE_STRING) .setLegacySubType(TelephonyManager.NETWORK_TYPE_UNKNOWN) - .setLegacySubTypeName( - TelephonyManager.getNetworkTypeName( - TelephonyManager.NETWORK_TYPE_UNKNOWN)) + .setLegacySubTypeName(NETWORK_TYPE_STRING_UNKNOWN) .setLegacyExtraInfo(NETWORK_INFO_EXTRA_INFO) .build(); diff --git a/services/core/java/com/android/server/vcn/routeselection/UnderlyingNetworkController.java b/services/core/java/com/android/server/vcn/routeselection/UnderlyingNetworkController.java index 3f8d39e72e89..2b0ca0802359 100644 --- a/services/core/java/com/android/server/vcn/routeselection/UnderlyingNetworkController.java +++ b/services/core/java/com/android/server/vcn/routeselection/UnderlyingNetworkController.java @@ -360,7 +360,10 @@ public class UnderlyingNetworkController { final NetworkRequest.Builder nrBuilder = getBaseNetworkRequestBuilder() .addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR) - .setNetworkSpecifier(new TelephonyNetworkSpecifier(subId)); + .setNetworkSpecifier( + new TelephonyNetworkSpecifier.Builder() + .setSubscriptionId(subId) + .build()); for (CapabilityMatchCriteria capMatchCriteria : capsMatchCriteria) { final int cap = capMatchCriteria.capability; diff --git a/tests/vcn/java/com/android/server/VcnManagementServiceTest.java b/tests/vcn/java/com/android/server/VcnManagementServiceTest.java index 580efe126ea3..4cb7c91b2451 100644 --- a/tests/vcn/java/com/android/server/VcnManagementServiceTest.java +++ b/tests/vcn/java/com/android/server/VcnManagementServiceTest.java @@ -146,6 +146,8 @@ public class VcnManagementServiceTest { private static final LinkProperties TEST_LP_1 = new LinkProperties(); private static final LinkProperties TEST_LP_2 = new LinkProperties(); + private static final int ACTIVE_MODEM_COUNT = 2; + static { TEST_LP_1.setInterfaceName(TEST_IFACE_NAME); TEST_LP_2.setInterfaceName(TEST_IFACE_NAME_2); @@ -233,6 +235,7 @@ public class VcnManagementServiceTest { setupSystemService(mMockContext, mUserManager, Context.USER_SERVICE, UserManager.class); doReturn(TEST_USER_HANDLE).when(mUserManager).getMainUser(); + doReturn(ACTIVE_MODEM_COUNT).when(mTelMgr).getActiveModemCount(); doReturn(TEST_PACKAGE_NAME).when(mMockContext).getOpPackageName(); |