diff options
author | Roshan Pius <rpius@google.com> | 2016-09-02 21:53:51 -0700 |
---|---|---|
committer | Roshan Pius <rpius@google.com> | 2016-09-02 22:38:19 -0700 |
commit | 19445ad39f8eb6229d3a08ec9b713534ed5a759e (patch) | |
tree | c3a186bab9ecaf4f6141d758606e126b40e22b5f | |
parent | 0f166e9103c4ef46eaa49ad20359ce0db2ef9791 (diff) |
WifiConfigStoreData: Check WifiEntepriseConfig validity
Ensure that that the enterprise config data is valid using the eap
method. This is initialized to -1 (NONE). Using the the existing
|WifiConfiguration.isEnterprise()| leaves us in the mercy of apps
providing a valid enterpiseConfig field.
BUG: 31275240
TEST: Added Unit test. The test reproduces the exception reported in the
bug without the fix.
Change-Id: Ie9c5ee17315798b175bac23e03fc600c9e4a1d7b
-rw-r--r-- | service/java/com/android/server/wifi/WifiConfigStoreData.java | 3 | ||||
-rw-r--r-- | tests/wifitests/src/com/android/server/wifi/WifiConfigStoreDataTest.java | 16 |
2 files changed, 18 insertions, 1 deletions
diff --git a/service/java/com/android/server/wifi/WifiConfigStoreData.java b/service/java/com/android/server/wifi/WifiConfigStoreData.java index 9a796ebd1..bec7d920c 100644 --- a/service/java/com/android/server/wifi/WifiConfigStoreData.java +++ b/service/java/com/android/server/wifi/WifiConfigStoreData.java @@ -237,7 +237,8 @@ public class WifiConfigStoreData { XmlUtil.writeNextSectionEnd(out, XML_TAG_SECTION_HEADER_IP_CONFIGURATION); // Store the enterprise configuration for enterprise networks. - if (configuration.isEnterprise()) { + if (configuration.enterpriseConfig != null + && configuration.enterpriseConfig.getEapMethod() != WifiEnterpriseConfig.Eap.NONE) { XmlUtil.writeNextSectionStart( out, XML_TAG_SECTION_HEADER_WIFI_ENTERPRISE_CONFIGURATION); WifiEnterpriseConfigXmlUtil.writeToXml(out, configuration.enterpriseConfig); diff --git a/tests/wifitests/src/com/android/server/wifi/WifiConfigStoreDataTest.java b/tests/wifitests/src/com/android/server/wifi/WifiConfigStoreDataTest.java index a718c33bb..f16c0748a 100644 --- a/tests/wifitests/src/com/android/server/wifi/WifiConfigStoreDataTest.java +++ b/tests/wifitests/src/com/android/server/wifi/WifiConfigStoreDataTest.java @@ -20,6 +20,7 @@ import static org.junit.Assert.*; import static org.mockito.Mockito.*; import android.net.wifi.WifiConfiguration; +import android.net.wifi.WifiEnterpriseConfig; import android.net.wifi.WifiConfiguration.NetworkSelectionStatus; import android.test.suitebuilder.annotation.SmallTest; @@ -29,6 +30,7 @@ import org.xmlpull.v1.XmlPullParserException; import java.io.IOException; import java.nio.charset.StandardCharsets; import java.util.ArrayList; +import java.util.Arrays; import java.util.HashSet; import java.util.List; import java.util.Random; @@ -191,6 +193,20 @@ public class WifiConfigStoreDataTest { } /** + * Verify that a network with invalid entepriseConfig data is serialized/deserialized + * correctly. + */ + @Test + public void testInvalidEnterpriseConfig() + throws XmlPullParserException, IOException { + WifiConfiguration eapNetwork = WifiConfigurationTestUtil.createEapNetwork(); + eapNetwork.enterpriseConfig = new WifiEnterpriseConfig(); + List<WifiConfiguration> configurations = Arrays.asList(eapNetwork); + serializeDeserializeConfigStoreData( + new ArrayList<WifiConfiguration>(), configurations, false, false); + } + + /** * Verify that the manually populated xml string for is deserialized/serialized correctly. * This generates a store data corresponding to the XML string and verifies that the string * is indeed parsed correctly to the store data. |