Checks WEP password lengths of Wi-Fi network
- Checks for WEP40 and WEP104 password lengths (5 and 13 bytes)
Bug: 333289235
Flag: None
Test: unit test
atest -c WifiConfigController2Test
Change-Id: I5f96ad67ed0c67a2724960e72464dc0a56c0c1ab
diff --git a/src/com/android/settings/wifi/WifiConfigController2.java b/src/com/android/settings/wifi/WifiConfigController2.java
index 1e40568..1606469 100644
--- a/src/com/android/settings/wifi/WifiConfigController2.java
+++ b/src/com/android/settings/wifi/WifiConfigController2.java
@@ -514,6 +514,12 @@
submit.setEnabled(isSubmittable());
}
+ boolean isValidWepPassword(String password) {
+ // Checks for WEP40 and WEP104 password lengths (5 and 13 bytes)
+ int passwordLen = (password != null) ? password.length() : -1;
+ return passwordLen == 5 || passwordLen == 13;
+ }
+
boolean isValidPsk(String password) {
if (password.length() == 64 && password.matches("[0-9A-Fa-f]{64}")) {
return true;
@@ -535,7 +541,7 @@
boolean passwordInvalid = false;
if (mPasswordView != null
&& ((mWifiEntrySecurity == WifiEntry.SECURITY_WEP
- && mPasswordView.length() == 0)
+ && !isValidWepPassword(mPasswordView.getText().toString()))
|| (mWifiEntrySecurity == WifiEntry.SECURITY_PSK
&& !isValidPsk(mPasswordView.getText().toString()))
|| (mWifiEntrySecurity == WifiEntry.SECURITY_SAE
diff --git a/tests/robotests/src/com/android/settings/wifi/WifiConfigController2Test.java b/tests/robotests/src/com/android/settings/wifi/WifiConfigController2Test.java
index 7d96496..a531e3f 100644
--- a/tests/robotests/src/com/android/settings/wifi/WifiConfigController2Test.java
+++ b/tests/robotests/src/com/android/settings/wifi/WifiConfigController2Test.java
@@ -203,6 +203,39 @@
}
@Test
+ public void isSubmittable_wepPasswordLength5_returnTrue() {
+ when(mWifiEntry.getSecurity()).thenReturn(WifiEntry.SECURITY_WEP);
+ createController(mWifiEntry, WifiConfigUiBase2.MODE_CONNECT, false);
+ final TextView password = mView.findViewById(R.id.password);
+ assertThat(password).isNotNull();
+ password.setText("12345");
+
+ assertThat(mController.isSubmittable()).isTrue();
+ }
+
+ @Test
+ public void isSubmittable_wepPasswordLength13_returnTrue() {
+ when(mWifiEntry.getSecurity()).thenReturn(WifiEntry.SECURITY_WEP);
+ createController(mWifiEntry, WifiConfigUiBase2.MODE_CONNECT, false);
+ final TextView password = mView.findViewById(R.id.password);
+ assertThat(password).isNotNull();
+ password.setText("1234567890123");
+
+ assertThat(mController.isSubmittable()).isTrue();
+ }
+
+ @Test
+ public void isSubmittable_wepPasswordLength1_returnFalse() {
+ when(mWifiEntry.getSecurity()).thenReturn(WifiEntry.SECURITY_WEP);
+ createController(mWifiEntry, WifiConfigUiBase2.MODE_CONNECT, false);
+ final TextView password = mView.findViewById(R.id.password);
+ assertThat(password).isNotNull();
+ password.setText("1");
+
+ assertThat(mController.isSubmittable()).isFalse();
+ }
+
+ @Test
public void isSubmittable_longPsk_shouldReturnFalse() {
createController(mWifiEntry, WifiConfigUiBase2.MODE_CONNECT, false);
final TextView password = mView.findViewById(R.id.password);