提交 6c0ce6d3 编写于 作者: S Steffen Jaeckel 提交者: Tom Rini

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: NSteffen Jaeckel <jaeckel-floss@eyet-services.de>
Reviewed-by: NSimon Glass <sjg@chromium.org>
上级 1b2d6803
......@@ -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
......
......@@ -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;
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册