diff options
| author | 2024-08-21 05:49:52 +0000 | |
|---|---|---|
| committer | 2024-08-21 05:49:52 +0000 | |
| commit | 1692d8dc303e9d402d8b1b7cd4271ac4819e1d19 (patch) | |
| tree | adf930d9b037a055e0b8cb66f83f63d35839ce00 | |
| parent | bdc01a06af2a3450b295a6bab6bf6e8ae868683b (diff) | |
| parent | 443980d0556d6f6a44d33e583d26b91821f4c2ab (diff) | |
Merge "VPN: fix crash on missing CCM" into main
| -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(); |