Added additional check on bouncer to check if valid PIN length is stored

on device or not

This CL aims at adding an extra check on the bouncer which ensures that
a valid PIN length is stored on device. This provides an extra layer of
security to prevent any accidental lockouts of the user.

Bug: b/284355686
Test: Tested by installing the bouncer on local device and checking if
I am able to unlock the device as expected by setting a 6 digit PIN, and
a non 6 digit PIN as well. Restarted the device as well. Also, tested all CUJ's (b/290641061)

Change-Id: Ie1bb17e6d0b07ed0a0f696a074a94fca8df3991f
This commit is contained in:
Bhavuk Jain
2023-07-08 01:39:30 +00:00
parent d756cad817
commit 9a86082ec2
2 changed files with 8 additions and 6 deletions

View File

@@ -165,15 +165,18 @@ public class KeyguardPinViewController
* Responsible for identifying if PIN hinting is to be enabled or not
*/
private boolean isPinHinting() {
return mLockPatternUtils.getPinLength(KeyguardUpdateMonitor.getCurrentUser())
== DEFAULT_PIN_LENGTH;
return mPinLength == DEFAULT_PIN_LENGTH;
}
/**
* Responsible for identifying if auto confirm is enabled or not in Settings
* Responsible for identifying if auto confirm is enabled or not in Settings and
* a valid PIN_LENGTH is stored on the device (though the latter check is only to make it more
* robust since we only allow enabling PIN confirmation if the user has a valid PIN length
* saved on device)
*/
private boolean isAutoPinConfirmEnabledInSettings() {
//Checks if user has enabled the auto confirm in Settings
return mLockPatternUtils.isAutoPinConfirmEnabled(KeyguardUpdateMonitor.getCurrentUser());
return mLockPatternUtils.isAutoPinConfirmEnabled(KeyguardUpdateMonitor.getCurrentUser())
&& mPinLength != LockPatternUtils.PIN_LENGTH_UNAVAILABLE;
}
}

View File

@@ -105,6 +105,7 @@ class KeyguardPinViewControllerTest : SysuiTestCase() {
`when`(keyguardPinView.findViewById<View>(R.id.key_enter)).thenReturn(enterButton)
// For posture tests:
`when`(keyguardPinView.buttons).thenReturn(arrayOf())
`when`(lockPatternUtils.getPinLength(anyInt())).thenReturn(6)
pinViewController =
KeyguardPinViewController(
@@ -167,7 +168,6 @@ class KeyguardPinViewControllerTest : SysuiTestCase() {
@Test
fun startAppearAnimation_withAutoPinConfirmationFailedPasswordAttemptsLessThan5() {
`when`(featureFlags.isEnabled(Flags.AUTO_PIN_CONFIRMATION)).thenReturn(true)
`when`(lockPatternUtils.getPinLength(anyInt())).thenReturn(6)
`when`(lockPatternUtils.isAutoPinConfirmEnabled(anyInt())).thenReturn(true)
`when`(lockPatternUtils.getCurrentFailedPasswordAttempts(anyInt())).thenReturn(3)
`when`(passwordTextView.text).thenReturn("")
@@ -182,7 +182,6 @@ class KeyguardPinViewControllerTest : SysuiTestCase() {
@Test
fun startAppearAnimation_withAutoPinConfirmationFailedPasswordAttemptsMoreThan5() {
`when`(featureFlags.isEnabled(Flags.AUTO_PIN_CONFIRMATION)).thenReturn(true)
`when`(lockPatternUtils.getPinLength(anyInt())).thenReturn(6)
`when`(lockPatternUtils.isAutoPinConfirmEnabled(anyInt())).thenReturn(true)
`when`(lockPatternUtils.getCurrentFailedPasswordAttempts(anyInt())).thenReturn(6)
`when`(passwordTextView.text).thenReturn("")