siglongjmp 975 B

12345678910111213141516171819202122232425262728293031
  1. diff -ruNp tcp_wrappers_7.6.orig/rfc931.c tcp_wrappers_7.6/rfc931.c
  2. --- tcp_wrappers_7.6.orig/rfc931.c 2004-08-29 18:42:25.000000000 +0200
  3. +++ tcp_wrappers_7.6/rfc931.c 2004-08-29 18:41:04.000000000 +0200
  4. @@ -33,7 +33,7 @@ static char sccsid[] = "@(#) rfc931.c 1.
  5. int rfc931_timeout = RFC931_TIMEOUT;/* Global so it can be changed */
  6. -static jmp_buf timebuf;
  7. +static sigjmp_buf timebuf;
  8. /* fsocket - open stdio stream on top of socket */
  9. @@ -62,7 +62,7 @@ int protocol;
  10. static void timeout(sig)
  11. int sig;
  12. {
  13. - longjmp(timebuf, sig);
  14. + siglongjmp(timebuf, sig);
  15. }
  16. /* rfc931 - return remote user name, given socket structures */
  17. @@ -135,7 +135,7 @@ char *dest;
  18. * Set up a timer so we won't get stuck while waiting for the server.
  19. */
  20. - if (setjmp(timebuf) == 0) {
  21. + if (sigsetjmp(timebuf, 1) == 0) {
  22. /* Save SIGALRM timer and handler. Sudheer Abdul-Salam, SUN. */
  23. saved_timeout = alarm(0);
  24. nact.sa_handler = timeout;