summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPurushottam Kushwaha <quic_pkushwah@quicinc.com>2020-09-01 11:19:37 +0530
committerRoshan Pius <rpius@google.com>2020-09-02 17:09:11 +0000
commite4e5a49dbe4ca726c51d9350fa61088c2bb23d8a (patch)
tree8b00aaa6034cd50d6f87acf6bdba4a1c0b834cf4
parentedc209e114cb84977b592bd4ef2fe8203a68951c (diff)
NPE: Add null check for getConfiguredNetwork()
During CMD_RESET_SIM_NETWORKS , WifiConfiguration get via getConfiguredNetwork() shall be guarded with null to avoid Null Pointer Exception. Bug: 167345712 Test: atest com.android.server.wifi (cherry-picked from 75f843c66829afc8920f3cf6302651f753985cba) (cherry picked from commit 36f987c05103b123e40f65a792d81e7c3a1710d3) Merged-In: I612817342a9c541d51c8c022f7c09b9462e39d21 Change-Id: I612817342a9c541d51c8c022f7c09b9462e39d21
-rw-r--r--service/java/com/android/server/wifi/ClientModeImpl.java5
-rw-r--r--tests/wifitests/src/com/android/server/wifi/ClientModeImplTest.java17
2 files changed, 20 insertions, 2 deletions
diff --git a/service/java/com/android/server/wifi/ClientModeImpl.java b/service/java/com/android/server/wifi/ClientModeImpl.java
index 95983096a..9f4c41f83 100644
--- a/service/java/com/android/server/wifi/ClientModeImpl.java
+++ b/service/java/com/android/server/wifi/ClientModeImpl.java
@@ -5013,11 +5013,12 @@ public class ClientModeImpl extends StateMachine {
&& mLastNetworkId != WifiConfiguration.INVALID_NETWORK_ID) {
WifiConfiguration config =
mWifiConfigManager.getConfiguredNetwork(mLastNetworkId);
- if ((message.arg1 == RESET_SIM_REASON_DEFAULT_DATA_SIM_CHANGED
+ if (config != null
+ && ((message.arg1 == RESET_SIM_REASON_DEFAULT_DATA_SIM_CHANGED
&& config.carrierId != TelephonyManager.UNKNOWN_CARRIER_ID)
|| (config.enterpriseConfig != null
&& config.enterpriseConfig.isAuthenticationSimBased()
- && !mWifiCarrierInfoManager.isSimPresent(mLastSubId))) {
+ && !mWifiCarrierInfoManager.isSimPresent(mLastSubId)))) {
mWifiMetrics.logStaEvent(StaEvent.TYPE_FRAMEWORK_DISCONNECT,
StaEvent.DISCONNECT_RESET_SIM_NETWORKS);
// remove local PMKSA cache in framework
diff --git a/tests/wifitests/src/com/android/server/wifi/ClientModeImplTest.java b/tests/wifitests/src/com/android/server/wifi/ClientModeImplTest.java
index a9d7f0ce2..fd1ef1718 100644
--- a/tests/wifitests/src/com/android/server/wifi/ClientModeImplTest.java
+++ b/tests/wifitests/src/com/android/server/wifi/ClientModeImplTest.java
@@ -1114,6 +1114,23 @@ public class ClientModeImplTest extends WifiBaseTest {
}
/**
+ * When the SIM card was removed, if the current wifi connection is using it, the connection
+ * should be disconnected, otherwise, the connection shouldn't be impacted.
+ */
+ @Test
+ public void testResetSimWhenConnectedSimRemovedAfterNetworkRemoval() throws Exception {
+ setupEapSimConnection();
+ doReturn(false).when(mWifiCarrierInfoManager).isSimPresent(eq(DATA_SUBID));
+ when(mWifiConfigManager.getConfiguredNetwork(anyInt())).thenReturn(null);
+ mCmi.sendMessage(ClientModeImpl.CMD_RESET_SIM_NETWORKS,
+ ClientModeImpl.RESET_SIM_REASON_SIM_REMOVED);
+ mLooper.dispatchAll();
+
+ verify(mSimRequiredNotifier, never()).showSimRequiredNotification(any(), any());
+ assertEquals("ObtainingIpState", getCurrentState().getName());
+ }
+
+ /**
* When the default data SIM is changed, if the current wifi connection is carrier wifi,
* the connection should be disconnected.
*/