diff options
Diffstat (limited to 'packages/util-linux-ng/util-linux-ng-2.14/util-linux-ng-replace-siginterrupt.patch')
-rw-r--r-- | packages/util-linux-ng/util-linux-ng-2.14/util-linux-ng-replace-siginterrupt.patch | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/packages/util-linux-ng/util-linux-ng-2.14/util-linux-ng-replace-siginterrupt.patch b/packages/util-linux-ng/util-linux-ng-2.14/util-linux-ng-replace-siginterrupt.patch new file mode 100644 index 0000000000..4b5eb73760 --- /dev/null +++ b/packages/util-linux-ng/util-linux-ng-2.14/util-linux-ng-replace-siginterrupt.patch @@ -0,0 +1,23 @@ +Index: util-linux-ng-2.14/login-utils/login.c +=================================================================== +--- util-linux-ng-2.14.orig/login-utils/login.c 2008-05-28 16:01:02.000000000 -0700 ++++ util-linux-ng-2.14/login-utils/login.c 2009-03-04 18:31:42.000000000 -0800 +@@ -358,6 +358,7 @@ + char *childArgv[10]; + char *buff; + int childArgc = 0; ++ struct sigaction act; + #ifdef HAVE_SECURITY_PAM_MISC_H + int retcode; + pam_handle_t *pamh = NULL; +@@ -373,7 +374,9 @@ + pid = getpid(); + + 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((unsigned int)timeout); + signal(SIGQUIT, SIG_IGN); + signal(SIGINT, SIG_IGN); |