diff options
author | Steffen Jaeckel <jaeckel-floss@eyet-services.de> | 2021-07-08 15:57:37 +0200 |
---|---|---|
committer | Tom Rini <trini@konsulko.com> | 2021-07-23 13:36:20 -0400 |
commit | 6c0ce6d3ca273f12e1cb4018144bee8e6131d30d (patch) | |
tree | 86f4cc2c0cb94fef6e04267387af8f16e366ed8e /common | |
parent | 1b2d68033be5703bef482498d81e07c19f69084e (diff) | |
download | u-boot-6c0ce6d3ca273f12e1cb4018144bee8e6131d30d.tar.gz |
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>
Diffstat (limited to 'common')
-rw-r--r-- | common/Kconfig.boot | 8 | ||||
-rw-r--r-- | common/autoboot.c | 12 |
2 files changed, 19 insertions, 1 deletions
diff --git a/common/Kconfig.boot b/common/Kconfig.boot index fe60ad0171..f9551b206f 100644 --- a/common/Kconfig.boot +++ b/common/Kconfig.boot @@ -860,6 +860,14 @@ config AUTOBOOT_KEYED_CTRLC Setting this variable provides an escape sequence from the 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 bool "Enable fixed string to stop autobooting" depends on AUTOBOOT_KEYED && AUTOBOOT_ENCRYPTION diff --git a/common/autoboot.c b/common/autoboot.c index 832ef7c78c..2564ef8a56 100644 --- a/common/autoboot.c +++ b/common/autoboot.c @@ -63,6 +63,10 @@ static int menukey; * or * 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) * @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]; u_int presskey_len = 0; int abort = 0; + int never_timeout = 0; int err; 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') || (presskey[presskey_len] == '\n')) { + if (IS_ENABLED(CONFIG_AUTOBOOT_NEVER_TIMEOUT) && + !presskey_len) { + never_timeout = 1; + continue; + } presskey[presskey_len] = '\0'; err = crypt_compare(crypt_env_str, presskey, &abort); @@ -104,7 +114,7 @@ static int passwd_abort_crypt(uint64_t etime) presskey_len++; } } - } while (get_ticks() <= etime); + } while (never_timeout || get_ticks() <= etime); return abort; } |