summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Sunil Ravi <sunilravi@google.com> 2023-04-04 22:00:30 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2023-04-04 22:00:30 +0000
commitfc3926683b26c077ca05906ffe6685e092667ccf (patch)
tree0c8262311334957fcb26d5dd71354466ba39fec6
parent7b4732fdd8be5600ce05ede5852664a2ec00af6f (diff)
parentf1f03b5f202a76c375d2c41a01d92fda20c62ff7 (diff)
Merge "Flush the PMK cache if credential is changed" into udc-dev
-rw-r--r--service/java/com/android/server/wifi/ClientModeImpl.java4
-rw-r--r--service/java/com/android/server/wifi/WifiConfigurationUtil.java9
-rw-r--r--service/tests/wifitests/src/com/android/server/wifi/ClientModeImplTest.java7
-rw-r--r--service/tests/wifitests/src/com/android/server/wifi/WifiConfigurationUtilTest.java10
4 files changed, 20 insertions, 10 deletions
diff --git a/service/java/com/android/server/wifi/ClientModeImpl.java b/service/java/com/android/server/wifi/ClientModeImpl.java
index c6b0e83a7d..ae6fcb2b29 100644
--- a/service/java/com/android/server/wifi/ClientModeImpl.java
+++ b/service/java/com/android/server/wifi/ClientModeImpl.java
@@ -1201,10 +1201,10 @@ public class ClientModeImpl extends StateMachine implements ClientMode {
@Override
public void onNetworkUpdated(WifiConfiguration newConfig, WifiConfiguration oldConfig) {
- // Clear invalid cached data.
- mWifiNative.removeNetworkCachedData(oldConfig.networkId);
if (WifiConfigurationUtil.hasCredentialChanged(oldConfig, newConfig)) {
+ // Clear invalid cached data.
+ mWifiNative.removeNetworkCachedData(oldConfig.networkId);
mWifiBlocklistMonitor.handleNetworkRemoved(newConfig.SSID);
}
diff --git a/service/java/com/android/server/wifi/WifiConfigurationUtil.java b/service/java/com/android/server/wifi/WifiConfigurationUtil.java
index c4d19ca1eb..226b80f4ca 100644
--- a/service/java/com/android/server/wifi/WifiConfigurationUtil.java
+++ b/service/java/com/android/server/wifi/WifiConfigurationUtil.java
@@ -279,8 +279,13 @@ public class WifiConfigurationUtil {
return true;
}
if (existingEnterpriseConfig.isAuthenticationSimBased()) {
- // The anonymous identity will be decorated with 3gpp realm in the service.
- if (!TextUtils.equals(existingEnterpriseConfig.getAnonymousIdentity(),
+ // On Pre-T devices consider it as a credential change so that the network
+ // configuration is reloaded in wpa_supplicant during reconnection. This is to
+ // ensure that the updated anonymous identity is sent to wpa_supplicant. On newer
+ // releases the anonymous identity is updated immediately after connection
+ // completion event.
+ if (!SdkLevel.isAtLeastT()
+ && !TextUtils.equals(existingEnterpriseConfig.getAnonymousIdentity(),
newEnterpriseConfig.getAnonymousIdentity())) {
return true;
}
diff --git a/service/tests/wifitests/src/com/android/server/wifi/ClientModeImplTest.java b/service/tests/wifitests/src/com/android/server/wifi/ClientModeImplTest.java
index a34f3161b4..5a2dae6a87 100644
--- a/service/tests/wifitests/src/com/android/server/wifi/ClientModeImplTest.java
+++ b/service/tests/wifitests/src/com/android/server/wifi/ClientModeImplTest.java
@@ -6871,12 +6871,13 @@ public class ClientModeImplTest extends WifiBaseTest {
}
/**
- * Verify that network cached data is cleared on updating a network.
+ * Verify that network cached data is cleared on changing the credential.
*/
@Test
- public void testNetworkCachedDataIsClearedOnUpdatingNetwork() throws Exception {
+ public void testNetworkCachedDataIsClearedOnChangingTheCredential() throws Exception {
+ mConnectedNetwork = spy(WifiConfigurationTestUtil.createPasspointNetwork());
WifiConfiguration oldConfig = new WifiConfiguration(mConnectedNetwork);
- mConnectedNetwork.meteredOverride = METERED_OVERRIDE_METERED;
+ mConnectedNetwork.enterpriseConfig.setPassword("fakePassword");
for (WifiConfigManager.OnNetworkUpdateListener listener : mConfigUpdateListenerCaptor
.getAllValues()) {
diff --git a/service/tests/wifitests/src/com/android/server/wifi/WifiConfigurationUtilTest.java b/service/tests/wifitests/src/com/android/server/wifi/WifiConfigurationUtilTest.java
index 102f704831..08fce8cec1 100644
--- a/service/tests/wifitests/src/com/android/server/wifi/WifiConfigurationUtilTest.java
+++ b/service/tests/wifitests/src/com/android/server/wifi/WifiConfigurationUtilTest.java
@@ -956,18 +956,22 @@ public class WifiConfigurationUtilTest extends WifiBaseTest {
}
/**
- * Verify that WifiConfigurationUtil.isSameNetwork returns false when two WifiConfiguration
+ * Verify WifiConfigurationUtil.isSameNetwork return vale when two WifiConfiguration
* objects have the different EAP anonymous(pseudonym) identity in EAP-SIM.
*/
@Test
- public void testIsSameNetworkReturnsFalseOnDifferentEapAnonymousIdentityInEapSim() {
+ public void testIsSameNetworkReturnValueOnDifferentEapAnonymousIdentityInEapSim() {
WifiConfiguration network1 = WifiConfigurationTestUtil.createEapNetwork(TEST_SSID);
WifiConfiguration network2 = WifiConfigurationTestUtil.createEapNetwork(TEST_SSID);
network1.enterpriseConfig.setEapMethod(WifiEnterpriseConfig.Eap.SIM);
network2.enterpriseConfig.setEapMethod(WifiEnterpriseConfig.Eap.SIM);
network1.enterpriseConfig.setAnonymousIdentity("Identity1");
network2.enterpriseConfig.setAnonymousIdentity("Identity2");
- assertFalse(WifiConfigurationUtil.isSameNetwork(network1, network2));
+ if (SdkLevel.isAtLeastT()) {
+ assertTrue(WifiConfigurationUtil.isSameNetwork(network1, network2));
+ } else {
+ assertFalse(WifiConfigurationUtil.isSameNetwork(network1, network2));
+ }
}
/**