summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--service/java/com/android/server/wifi/WifiConfigManager.java4
-rw-r--r--tests/wifitests/src/com/android/server/wifi/WifiConfigManagerTest.java44
-rw-r--r--tests/wifitests/src/com/android/server/wifi/WifiConfigurationTestUtil.java1
3 files changed, 47 insertions, 2 deletions
diff --git a/service/java/com/android/server/wifi/WifiConfigManager.java b/service/java/com/android/server/wifi/WifiConfigManager.java
index 4b2bb1c49..25a5a20ad 100644
--- a/service/java/com/android/server/wifi/WifiConfigManager.java
+++ b/service/java/com/android/server/wifi/WifiConfigManager.java
@@ -820,8 +820,8 @@ public class WifiConfigManager {
// Copy over the |WifiEnterpriseConfig| parameters if set.
if (externalConfig.enterpriseConfig != null) {
- internalConfig.enterpriseConfig =
- new WifiEnterpriseConfig(externalConfig.enterpriseConfig);
+ internalConfig.enterpriseConfig.copyFromExternal(
+ externalConfig.enterpriseConfig, PASSWORD_MASK);
}
}
diff --git a/tests/wifitests/src/com/android/server/wifi/WifiConfigManagerTest.java b/tests/wifitests/src/com/android/server/wifi/WifiConfigManagerTest.java
index e85686fa7..9fa67a000 100644
--- a/tests/wifitests/src/com/android/server/wifi/WifiConfigManagerTest.java
+++ b/tests/wifitests/src/com/android/server/wifi/WifiConfigManagerTest.java
@@ -1381,6 +1381,50 @@ public class WifiConfigManagerTest {
}
/**
+ * Verifies that if the app sends back the masked passwords in an update, we ignore it.
+ */
+ @Test
+ public void testUpdateIgnoresMaskedPasswords() {
+ WifiConfiguration someRandomNetworkWithAllMaskedFields =
+ WifiConfigurationTestUtil.createEapNetwork();
+ someRandomNetworkWithAllMaskedFields.wepKeys = WifiConfigurationTestUtil.TEST_WEP_KEYS;
+ someRandomNetworkWithAllMaskedFields.preSharedKey = WifiConfigurationTestUtil.TEST_PSK;
+ someRandomNetworkWithAllMaskedFields.enterpriseConfig.setPassword(
+ WifiConfigurationTestUtil.TEST_EAP_PASSWORD);
+
+ NetworkUpdateResult result =
+ verifyAddNetworkToWifiConfigManager(someRandomNetworkWithAllMaskedFields);
+
+ // All of these passwords must be masked in this retrieved network config.
+ WifiConfiguration retrievedNetworkWithMaskedPassword =
+ mWifiConfigManager.getConfiguredNetwork(result.getNetworkId());
+ assertPasswordsMaskedInWifiConfiguration(retrievedNetworkWithMaskedPassword);
+ // Ensure that the passwords are present internally.
+ WifiConfiguration retrievedNetworkWithPassword =
+ mWifiConfigManager.getConfiguredNetworkWithPassword(result.getNetworkId());
+ assertEquals(someRandomNetworkWithAllMaskedFields.preSharedKey,
+ retrievedNetworkWithPassword.preSharedKey);
+ assertEquals(someRandomNetworkWithAllMaskedFields.wepKeys,
+ retrievedNetworkWithPassword.wepKeys);
+ assertEquals(someRandomNetworkWithAllMaskedFields.enterpriseConfig.getPassword(),
+ retrievedNetworkWithPassword.enterpriseConfig.getPassword());
+
+ // Now update the same network config using the masked config.
+ verifyUpdateNetworkToWifiConfigManager(retrievedNetworkWithMaskedPassword);
+
+ // Retrieve the network config with password and ensure that they have not been overwritten
+ // with *.
+ retrievedNetworkWithPassword =
+ mWifiConfigManager.getConfiguredNetworkWithPassword(result.getNetworkId());
+ assertEquals(someRandomNetworkWithAllMaskedFields.preSharedKey,
+ retrievedNetworkWithPassword.preSharedKey);
+ assertEquals(someRandomNetworkWithAllMaskedFields.wepKeys,
+ retrievedNetworkWithPassword.wepKeys);
+ assertEquals(someRandomNetworkWithAllMaskedFields.enterpriseConfig.getPassword(),
+ retrievedNetworkWithPassword.enterpriseConfig.getPassword());
+ }
+
+ /**
* Verifies the ordering of network list generated using
* {@link WifiConfigManager#retrievePnoNetworkList()}.
*/
diff --git a/tests/wifitests/src/com/android/server/wifi/WifiConfigurationTestUtil.java b/tests/wifitests/src/com/android/server/wifi/WifiConfigurationTestUtil.java
index b53732a91..f7bf5b022 100644
--- a/tests/wifitests/src/com/android/server/wifi/WifiConfigurationTestUtil.java
+++ b/tests/wifitests/src/com/android/server/wifi/WifiConfigurationTestUtil.java
@@ -65,6 +65,7 @@ public class WifiConfigurationTestUtil {
public static final String[] TEST_WEP_KEYS =
{"\"WifiConfigurationTestUtilWep1\"", "\"WifiConfigurationTestUtilWep2\"",
"45342312ab", "45342312ab45342312ab34ac12"};
+ public static final String TEST_EAP_PASSWORD = "WifiConfigurationTestUtilEapPassword";
public static final int TEST_WEP_TX_KEY_INDEX = 1;
public static final String TEST_FQDN = "WifiConfigurationTestUtilFQDN";
public static final String TEST_PROVIDER_FRIENDLY_NAME =