diff options
-rw-r--r-- | lib/libwrap/percent_m.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/lib/libwrap/percent_m.c b/lib/libwrap/percent_m.c index 86f531619ea..82b0b84ebb8 100644 --- a/lib/libwrap/percent_m.c +++ b/lib/libwrap/percent_m.c @@ -1,4 +1,4 @@ -/* $OpenBSD: percent_m.c,v 1.1 1997/02/26 03:06:54 downsj Exp $ */ +/* $OpenBSD: percent_m.c,v 1.2 2001/11/07 18:48:48 deraadt Exp $ */ /* * Replace %m by system error message. @@ -10,7 +10,7 @@ #if 0 static char sccsid[] = "@(#) percent_m.c 1.1 94/12/28 17:42:37"; #else -static char rcsid[] = "$OpenBSD: percent_m.c,v 1.1 1997/02/26 03:06:54 downsj Exp $"; +static char rcsid[] = "$OpenBSD: percent_m.c,v 1.2 2001/11/07 18:48:48 deraadt Exp $"; #endif #endif @@ -31,13 +31,15 @@ char *ibuf; { char *bp = obuf; char *cp = ibuf; + int len = BUFSIZ; while ((*bp = *cp)) { if (*cp == '%' && cp[1] == 'm') { + len = BUFSIZ - (bp - obuf); if (errno < sys_nerr && errno > 0) { - strcpy(bp, sys_errlist[errno]); + strlcpy(bp, sys_errlist[errno], len); } else { - sprintf(bp, "Unknown error %d", errno); + snprintf(bp, len, "Unknown error %d", errno); } bp += strlen(bp); cp += 2; |