38 lines
1.0 KiB
Diff
38 lines
1.0 KiB
Diff
diff -ruN tcp_wrappers_7.6.orig/rfc931.c tcp_wrappers_7.6/rfc931.c
|
|
--- tcp_wrappers_7.6.orig/rfc931.c 2004-08-29 18:40:08.000000000 +0200
|
|
+++ tcp_wrappers_7.6/rfc931.c 2004-08-29 18:40:02.000000000 +0200
|
|
@@ -92,6 +92,8 @@
|
|
char *cp;
|
|
char *result = unknown;
|
|
FILE *fp;
|
|
+ unsigned saved_timeout;
|
|
+ struct sigaction nact, oact;
|
|
|
|
#ifdef INET6
|
|
/* address family must be the same */
|
|
@@ -134,7 +136,12 @@
|
|
*/
|
|
|
|
if (setjmp(timebuf) == 0) {
|
|
- signal(SIGALRM, timeout);
|
|
+ /* Save SIGALRM timer and handler. Sudheer Abdul-Salam, SUN. */
|
|
+ saved_timeout = alarm(0);
|
|
+ nact.sa_handler = timeout;
|
|
+ nact.sa_flags = 0;
|
|
+ (void) sigemptyset(&nact.sa_mask);
|
|
+ (void) sigaction(SIGALRM, &nact, &oact);
|
|
alarm(rfc931_timeout);
|
|
|
|
/*
|
|
@@ -223,6 +230,10 @@
|
|
}
|
|
alarm(0);
|
|
}
|
|
+ /* Restore SIGALRM timer and handler. Sudheer Abdul-Salam, SUN. */
|
|
+ (void) sigaction(SIGALRM, &oact, NULL);
|
|
+ if (saved_timeout > 0)
|
|
+ alarm(saved_timeout);
|
|
fclose(fp);
|
|
}
|
|
STRN_CPY(dest, result, STRING_LENGTH);
|