Upstream-Status: Pending Index: util-linux-2.22.1/login-utils/login.c =================================================================== --- util-linux-2.22.1.orig/login-utils/login.c +++ util-linux-2.22.1/login-utils/login.c @@ -1239,6 +1239,8 @@ int main(int argc, char **argv) char *buff; int childArgc = 0; int retcode; + struct sigaction act; + char *pwdbuf = NULL; struct passwd *pwd = NULL, _pwd; @@ -1252,7 +1254,10 @@ int main(int argc, char **argv) timeout = (unsigned int)getlogindefs_num("LOGIN_TIMEOUT", LOGIN_TIMEOUT); signal(SIGALRM, timedout); - siginterrupt(SIGALRM, 1); /* we have to interrupt syscalls like ioclt() */ + (void) sigaction(SIGALRM, NULL, &act); + act.sa_flags &= ~SA_RESTART; + sigaction(SIGALRM, &act, NULL); + alarm(timeout); signal(SIGQUIT, SIG_IGN); signal(SIGINT, SIG_IGN);