From ddf705903e2401e0f5a121dcb4f7772b16483470 Mon Sep 17 00:00:00 2001 From: Glen Kuhne Date: Mon, 9 Oct 2017 15:40:46 -0700 Subject: [PATCH] Allow 64 char HEX string PSKs in WifiSettingsUi A check for valid PSKs in the settings UI didnt capture the 64 character HEX string case. Added a check for it. Test: tests/app/src/com/android/settings/wifi/WifiSettingsUiTest.java Test: manual verification Bug: 67492639 Change-Id: Ide738c4a67f23b613883b4a69f8264a0ffb8a0bc --- .../android/settings/wifi/WifiConfigController.java | 12 ++++++++++-- .../settings/wifi/WifiConfigControllerTest.java | 13 +++++++++++-- 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/src/com/android/settings/wifi/WifiConfigController.java b/src/com/android/settings/wifi/WifiConfigController.java index 5a3d426d125..693574978af 100644 --- a/src/com/android/settings/wifi/WifiConfigController.java +++ b/src/com/android/settings/wifi/WifiConfigController.java @@ -411,15 +411,23 @@ public class WifiConfigController implements TextWatcher, submit.setEnabled(isSubmittable()); } + boolean isValidPsk(String password) { + if (password.length() == 64 && password.matches("[0-9A-Fa-f]{64}")) { + return true; + } else if (password.length() >= 8 && password.length() <= 63) { + return true; + } + return false; + } + boolean isSubmittable() { boolean enabled = false; boolean passwordInvalid = false; - if (mPasswordView != null && ((mAccessPointSecurity == AccessPoint.SECURITY_WEP && mPasswordView.length() == 0) || (mAccessPointSecurity == AccessPoint.SECURITY_PSK - && (mPasswordView.length() < 8 || mPasswordView.length() > 63)))) { + && !isValidPsk(mPasswordView.getText().toString())))) { passwordInvalid = true; } if ((mSsidView != null && mSsidView.length() == 0) diff --git a/tests/robotests/src/com/android/settings/wifi/WifiConfigControllerTest.java b/tests/robotests/src/com/android/settings/wifi/WifiConfigControllerTest.java index 3dcdc9175ee..e9b61463c08 100644 --- a/tests/robotests/src/com/android/settings/wifi/WifiConfigControllerTest.java +++ b/tests/robotests/src/com/android/settings/wifi/WifiConfigControllerTest.java @@ -55,8 +55,9 @@ public class WifiConfigControllerTest { private AccessPoint mAccessPoint; public WifiConfigController mController; - - // An invalid PSK pass phrase. It is 64 characters long, must not be greater than 63 + private static final String HEX_PSK = "01234567012345670123456701234567012345670123456701234567" + + "01abcdef"; + // An invalid ASCII PSK pass phrase. It is 64 characters long, must not be greater than 63 private static final String LONG_PSK = "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijkl"; // An invalid PSK pass phrase. It is 7 characters long, must be at least 8 @@ -140,6 +141,14 @@ public class WifiConfigControllerTest { } + @Test + public void isSubmittable_hexPsk_shouldReturnTrue() { + final TextView password = mView.findViewById(R.id.password); + password.setText(HEX_PSK); + assertThat(mController.isSubmittable()).isTrue(); + + } + @Test public void isSubmittable_savedConfigZeroLengthPassword_shouldReturnTrue() { final TextView password = mView.findViewById(R.id.password);