diff options
| author | 2024-08-19 06:19:16 -0700 | |
|---|---|---|
| committer | 2024-08-20 04:05:14 -0700 | |
| commit | 443980d0556d6f6a44d33e583d26b91821f4c2ab (patch) | |
| tree | b352e21c44d71c05deb091a2bc46ad40a4a2276d | |
| parent | 2aa865d1bd17fcbe3cff457d37af7da7df45e65f (diff) | |
VPN: fix crash on missing CCM
Bug: 350408964
Test: atest CtsNetTestCases:android.net.cts.Ikev2VpnTest#testStartProvisionedVpnV4ProfileSession
Flag: EXEMPT bugfix
Change-Id: I2f08fb2fba667afa34f9951ff193bcb9d12683a6
| -rw-r--r-- | services/core/java/com/android/server/connectivity/Vpn.java | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/services/core/java/com/android/server/connectivity/Vpn.java b/services/core/java/com/android/server/connectivity/Vpn.java index 5905b7de5b6e..e1bb8a1a0f21 100644 --- a/services/core/java/com/android/server/connectivity/Vpn.java +++ b/services/core/java/com/android/server/connectivity/Vpn.java @@ -344,7 +344,11 @@ public class Vpn { private final AppOpsManager mAppOpsManager; private final ConnectivityDiagnosticsManager mConnectivityDiagnosticsManager; private final TelephonyManager mTelephonyManager; + + // null if FEATURE_TELEPHONY_SUBSCRIPTION is not declared + @Nullable private final CarrierConfigManager mCarrierConfigManager; + private final SubscriptionManager mSubscriptionManager; // The context is for specific user which is created from mUserId @@ -2837,8 +2841,10 @@ public class Vpn { createUserAndRestrictedProfilesRanges(mUserId, mConfig.allowedApplications, mConfig.disallowedApplications)); - mCarrierConfigManager.registerCarrierConfigChangeListener(mExecutor, - mCarrierConfigChangeListener); + if (mCarrierConfigManager != null) { + mCarrierConfigManager.registerCarrierConfigChangeListener(mExecutor, + mCarrierConfigChangeListener); + } } @Override @@ -3343,6 +3349,10 @@ public class Vpn { */ @Nullable private CarrierConfigInfo getCarrierConfigForUnderlyingNetwork() { + if (mCarrierConfigManager == null) { + return null; + } + final int subId = getCellSubIdForNetworkCapabilities(mUnderlyingNetworkCapabilities); if (subId == SubscriptionManager.INVALID_SUBSCRIPTION_ID) { Log.d(TAG, "Underlying network is not a cellular network"); @@ -3962,8 +3972,10 @@ public class Vpn { resetIkeState(); - mCarrierConfigManager.unregisterCarrierConfigChangeListener( - mCarrierConfigChangeListener); + if (mCarrierConfigManager != null) { + mCarrierConfigManager.unregisterCarrierConfigChangeListener( + mCarrierConfigChangeListener); + } mConnectivityManager.unregisterNetworkCallback(mNetworkCallback); mExecutor.shutdown(); |