mirror of
https://github.com/Fishwaldo/u-boot.git
synced 2025-07-22 23:05:25 +00:00
common: allow disabling of timeout for password entry
In case a user has to enter a complicated password it is sometimes desireable to give the user more time than the default timeout. Enabling this feature will disable the timeout entirely in case the user presses the <Enter> key before entering any other character. Signed-off-by: Steffen Jaeckel <jaeckel-floss@eyet-services.de> Reviewed-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
parent
1b2d68033b
commit
6c0ce6d3ca
2 changed files with 19 additions and 1 deletions
|
@ -860,6 +860,14 @@ config AUTOBOOT_KEYED_CTRLC
|
||||||
Setting this variable provides an escape sequence from the
|
Setting this variable provides an escape sequence from the
|
||||||
limited "password" strings.
|
limited "password" strings.
|
||||||
|
|
||||||
|
config AUTOBOOT_NEVER_TIMEOUT
|
||||||
|
bool "Make the password entry never time-out"
|
||||||
|
depends on AUTOBOOT_KEYED && AUTOBOOT_ENCRYPTION && CRYPT_PW
|
||||||
|
help
|
||||||
|
This option removes the timeout from the password entry
|
||||||
|
when the user first presses the <Enter> key before entering
|
||||||
|
any other character.
|
||||||
|
|
||||||
config AUTOBOOT_STOP_STR_ENABLE
|
config AUTOBOOT_STOP_STR_ENABLE
|
||||||
bool "Enable fixed string to stop autobooting"
|
bool "Enable fixed string to stop autobooting"
|
||||||
depends on AUTOBOOT_KEYED && AUTOBOOT_ENCRYPTION
|
depends on AUTOBOOT_KEYED && AUTOBOOT_ENCRYPTION
|
||||||
|
|
|
@ -63,6 +63,10 @@ static int menukey;
|
||||||
* or
|
* or
|
||||||
* the config value CONFIG_AUTOBOOT_STOP_STR_CRYPT
|
* the config value CONFIG_AUTOBOOT_STOP_STR_CRYPT
|
||||||
*
|
*
|
||||||
|
* In case the config value CONFIG_AUTOBOOT_NEVER_TIMEOUT has been enabled
|
||||||
|
* this function never times out if the user presses the <Enter> key
|
||||||
|
* before starting to enter the password.
|
||||||
|
*
|
||||||
* @etime: Timeout value ticks (stop when get_ticks() reachs this)
|
* @etime: Timeout value ticks (stop when get_ticks() reachs this)
|
||||||
* @return 0 if autoboot should continue, 1 if it should stop
|
* @return 0 if autoboot should continue, 1 if it should stop
|
||||||
*/
|
*/
|
||||||
|
@ -72,6 +76,7 @@ static int passwd_abort_crypt(uint64_t etime)
|
||||||
char presskey[DELAY_STOP_STR_MAX_LENGTH];
|
char presskey[DELAY_STOP_STR_MAX_LENGTH];
|
||||||
u_int presskey_len = 0;
|
u_int presskey_len = 0;
|
||||||
int abort = 0;
|
int abort = 0;
|
||||||
|
int never_timeout = 0;
|
||||||
int err;
|
int err;
|
||||||
|
|
||||||
if (IS_ENABLED(CONFIG_AUTOBOOT_STOP_STR_ENABLE) && !crypt_env_str)
|
if (IS_ENABLED(CONFIG_AUTOBOOT_STOP_STR_ENABLE) && !crypt_env_str)
|
||||||
|
@ -91,6 +96,11 @@ static int passwd_abort_crypt(uint64_t etime)
|
||||||
|
|
||||||
if ((presskey[presskey_len] == '\r') ||
|
if ((presskey[presskey_len] == '\r') ||
|
||||||
(presskey[presskey_len] == '\n')) {
|
(presskey[presskey_len] == '\n')) {
|
||||||
|
if (IS_ENABLED(CONFIG_AUTOBOOT_NEVER_TIMEOUT) &&
|
||||||
|
!presskey_len) {
|
||||||
|
never_timeout = 1;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
presskey[presskey_len] = '\0';
|
presskey[presskey_len] = '\0';
|
||||||
err = crypt_compare(crypt_env_str, presskey,
|
err = crypt_compare(crypt_env_str, presskey,
|
||||||
&abort);
|
&abort);
|
||||||
|
@ -104,7 +114,7 @@ static int passwd_abort_crypt(uint64_t etime)
|
||||||
presskey_len++;
|
presskey_len++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} while (get_ticks() <= etime);
|
} while (never_timeout || get_ticks() <= etime);
|
||||||
|
|
||||||
return abort;
|
return abort;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue