1234567891011121314151617181920212223242526272829303132333435363738 |
- 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);
|