summaryrefslogtreecommitdiff
path: root/lib/libwrap
diff options
context:
space:
mode:
authorchristos <christos@NetBSD.org>2016-03-16 21:38:22 +0000
committerchristos <christos@NetBSD.org>2016-03-16 21:38:22 +0000
commitc3c9dced76e1372967e75fefc75e2c1d1fcab9df (patch)
tree871d055dd536eee1f27b82fd2628ea98bba7cd9f /lib/libwrap
parent1e45dafd8541e4f837158808e06cd34329a4b39f (diff)
Avoid setjmp clobbering.
Diffstat (limited to 'lib/libwrap')
-rw-r--r--lib/libwrap/rfc931.c17
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