diff options
| author | christos <christos@NetBSD.org> | 2016-03-16 21:38:22 +0000 |
|---|---|---|
| committer | christos <christos@NetBSD.org> | 2016-03-16 21:38:22 +0000 |
| commit | c3c9dced76e1372967e75fefc75e2c1d1fcab9df (patch) | |
| tree | 871d055dd536eee1f27b82fd2628ea98bba7cd9f /lib/libwrap | |
| parent | 1e45dafd8541e4f837158808e06cd34329a4b39f (diff) | |
Avoid setjmp clobbering.
Diffstat (limited to 'lib/libwrap')
| -rw-r--r-- | lib/libwrap/rfc931.c | 17 |
1 files changed, 6 insertions, 11 deletions
diff --git a/lib/libwrap/rfc931.c b/lib/libwrap/rfc931.c index 800df72179e..7dc33892552 100644 --- a/lib/libwrap/rfc931.c +++ b/lib/libwrap/rfc931.c @@ -1,4 +1,4 @@ -/* $NetBSD: rfc931.c,v 1.10 2012/03/22 22:59:43 joerg Exp $ */ +/* $NetBSD: rfc931.c,v 1.11 2016/03/16 21:38:22 christos Exp $ */ /* * rfc931() speaks a common subset of the RFC 931, AUTH, TAP, IDENT and RFC @@ -16,7 +16,7 @@ #if 0 static char sccsid[] = "@(#) rfc931.c 1.10 95/01/02 16:11:34"; #else -__RCSID("$NetBSD: rfc931.c,v 1.10 2012/03/22 22:59:43 joerg Exp $"); +__RCSID("$NetBSD: rfc931.c,v 1.11 2016/03/16 21:38:22 christos Exp $"); #endif #endif @@ -87,7 +87,7 @@ rfc931(struct sockaddr *rmt_sin, struct sockaddr *our_sin, char *dest) char user[256]; /* XXX */ char buffer[512]; /* XXX */ char *cp; - char *result = unknown; + static char *result = unknown; FILE *fp; volatile int salen; u_short * volatile rmt_portp; @@ -95,7 +95,7 @@ rfc931(struct sockaddr *rmt_sin, struct sockaddr *our_sin, char *dest) /* address family must be the same */ if (rmt_sin->sa_family != our_sin->sa_family) { - strlcpy(dest, result, STRING_LENGTH); + strlcpy(dest, unknown, STRING_LENGTH); return; } switch (rmt_sin->sa_family) { @@ -110,7 +110,7 @@ rfc931(struct sockaddr *rmt_sin, struct sockaddr *our_sin, char *dest) break; #endif default: - strlcpy(dest, result, STRING_LENGTH); + strlcpy(dest, unknown, STRING_LENGTH); return; } switch (our_sin->sa_family) { @@ -123,15 +123,10 @@ rfc931(struct sockaddr *rmt_sin, struct sockaddr *our_sin, char *dest) break; #endif default: - strlcpy(dest, result, STRING_LENGTH); + strlcpy(dest, unknown, STRING_LENGTH); return; } -#ifdef __GNUC__ - (void)&result; /* Avoid longjmp clobbering */ - (void)&fp; /* XXX gcc */ -#endif - /* * Use one unbuffered stdio stream for writing to and for reading from * the RFC931 etc. server. This is done because of a bug in the SunOS |
