1Upstream-Status: Backport 2 3diff -ruN tcp_wrappers_7.6.orig/rfc931.c tcp_wrappers_7.6/rfc931.c 4--- tcp_wrappers_7.6.orig/rfc931.c 2004-08-29 18:40:08.000000000 +0200 5+++ tcp_wrappers_7.6/rfc931.c 2004-08-29 18:40:02.000000000 +0200 6@@ -92,6 +92,8 @@ 7 char *cp; 8 char *result = unknown; 9 FILE *fp; 10+ unsigned saved_timeout; 11+ struct sigaction nact, oact; 12 13 #ifdef INET6 14 /* address family must be the same */ 15@@ -134,7 +136,12 @@ 16 */ 17 18 if (setjmp(timebuf) == 0) { 19- signal(SIGALRM, timeout); 20+ /* Save SIGALRM timer and handler. Sudheer Abdul-Salam, SUN. */ 21+ saved_timeout = alarm(0); 22+ nact.sa_handler = timeout; 23+ nact.sa_flags = 0; 24+ (void) sigemptyset(&nact.sa_mask); 25+ (void) sigaction(SIGALRM, &nact, &oact); 26 alarm(rfc931_timeout); 27 28 /* 29@@ -223,6 +230,10 @@ 30 } 31 alarm(0); 32 } 33+ /* Restore SIGALRM timer and handler. Sudheer Abdul-Salam, SUN. */ 34+ (void) sigaction(SIGALRM, &oact, NULL); 35+ if (saved_timeout > 0) 36+ alarm(saved_timeout); 37 fclose(fp); 38 } 39 STRN_CPY(dest, result, STRING_LENGTH); 40