diff options
author | Andreas Henriksson | 2016-11-28 17:24:50 +0100 |
---|---|---|
committer | Karel Zak | 2016-12-07 13:32:42 +0100 |
commit | 1c4b2d43926e2a7032310cd18b411d8d872cb4ed (patch) | |
tree | 2cab61c1cd4a88cd7adcaebd4e0ce043273a9744 /login-utils/sulogin.c | |
parent | sulogin: make getpasswd(...) return NULL on ^D (diff) | |
download | kernel-qcow2-util-linux-1c4b2d43926e2a7032310cd18b411d8d872cb4ed.tar.gz kernel-qcow2-util-linux-1c4b2d43926e2a7032310cd18b411d8d872cb4ed.tar.xz kernel-qcow2-util-linux-1c4b2d43926e2a7032310cd18b411d8d872cb4ed.zip |
sulogin: bail out from getpasswd(...) on timeout
If timeout happens while waiting in prompt, bail out instead
of retrying.
Reported-by: Bjørn Mork <bjorn@mork.no>
Addresses: http://bugs.debian.org/846107
Signed-off-by: Andreas Henriksson <andreas@fatal.se>
Diffstat (limited to 'login-utils/sulogin.c')
-rw-r--r-- | login-utils/sulogin.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/login-utils/sulogin.c b/login-utils/sulogin.c index 806a967f0..8dc2b639d 100644 --- a/login-utils/sulogin.c +++ b/login-utils/sulogin.c @@ -645,6 +645,10 @@ static char *getpasswd(struct console *con) while (cp->eol == '\0') { if (read(fd, &c, 1) < 1) { if (errno == EINTR || errno == EAGAIN) { + if (alarm_rised) { + ret = NULL; + goto quit; + } xusleep(250000); continue; } |