28 lines
838 B
Diff
28 lines
838 B
Diff
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);
|