From e432cee4597c6c0daaaf342ece254293d31b0e03 Mon Sep 17 00:00:00 2001 From: beck <> Date: Wed, 20 Apr 2005 23:38:15 +0000 Subject: [PATCH] correct strlcpy abuse ok millert@ --- src/lib/libc/string/strerror_r.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/lib/libc/string/strerror_r.c b/src/lib/libc/string/strerror_r.c index db264bcf..c0ca434c 100644 --- a/src/lib/libc/string/strerror_r.c +++ b/src/lib/libc/string/strerror_r.c @@ -1,8 +1,8 @@ -/* $OpenBSD: strerror_r.c,v 1.2 2004/05/03 05:07:34 espie Exp $ */ +/* $OpenBSD: strerror_r.c,v 1.3 2005/04/20 23:38:15 beck Exp $ */ /* Public Domain */ #if defined(LIBC_SCCS) && !defined(lint) -static char *rcsid = "$OpenBSD: strerror_r.c,v 1.2 2004/05/03 05:07:34 espie Exp $"; +static char *rcsid = "$OpenBSD: strerror_r.c,v 1.3 2005/04/20 23:38:15 beck Exp $"; #endif /* LIBC_SCCS and not lint */ #ifdef NLS @@ -107,8 +107,12 @@ strerror_r(int errnum, char *strerrbuf, size_t buflen) #else len = strlcpy(strerrbuf, UPREFIX, buflen); #endif - __itoa(errnum, strerrbuf, len, buflen); - ret_errno = EINVAL; + if (len >= buflen) + ret_errno = ERANGE; + else { + __itoa(errnum, strerrbuf, len, buflen); + ret_errno = EINVAL; + } } #ifdef NLS