diff --git a/stand/lua/password.lua b/stand/lua/password.lua index 40cf72811af0..8042a5d3d0b5 100644 --- a/stand/lua/password.lua +++ b/stand/lua/password.lua @@ -40,6 +40,12 @@ local show_password_mask = false local twiddle_chars = {"/", "-", "\\", "|"} local screen_setup = false +local function setup_screen() + screen.clear() + screen.defcursor() + screen_setup = true +end + -- Module exports function password.read(prompt_length) local str = "" @@ -90,9 +96,7 @@ function password.check() end if not screen_setup then - screen.clear() - screen.defcursor() - screen_setup = true + setup_screen() end while true do @@ -131,6 +135,11 @@ function password.check() local pwd = loader.getenv("password") if pwd ~= nil then core.autoboot() + -- The autoboot sequence was interrupted, so we'll need to + -- prompt for a password. Put the screen back into a known + -- good state, otherwise we're drawing back a couple lines + -- in the middle of other text. + setup_screen() end compare("Loader password:", pwd) end