diff options
| author | roy <roy@NetBSD.org> | 2015-10-26 11:44:30 +0000 |
|---|---|---|
| committer | roy <roy@NetBSD.org> | 2015-10-26 11:44:30 +0000 |
| commit | 89f5f44a53e20baa9028bb8dfe7c7bfae37337ce (patch) | |
| tree | caab6704d54a5f499bd0ed557d3c492df0ef405b /lib | |
| parent | 077fdb162818b32d3927c2cd2098d14558399bd4 (diff) | |
Use strerror(3) instead of strerror_r(3) and an arbitary buffer size which could be too small.
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/libc/gen/syslog.c | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/lib/libc/gen/syslog.c b/lib/libc/gen/syslog.c index beb898cb214..a2a7311c43c 100644 --- a/lib/libc/gen/syslog.c +++ b/lib/libc/gen/syslog.c @@ -1,4 +1,4 @@ -/* $NetBSD: syslog.c,v 1.54 2014/09/18 13:58:20 christos Exp $ */ +/* $NetBSD: syslog.c,v 1.55 2015/10/26 11:44:30 roy Exp $ */ /* * Copyright (c) 1983, 1988, 1993 @@ -34,7 +34,7 @@ #if 0 static char sccsid[] = "@(#)syslog.c 8.5 (Berkeley) 4/29/95"; #else -__RCSID("$NetBSD: syslog.c,v 1.54 2014/09/18 13:58:20 christos Exp $"); +__RCSID("$NetBSD: syslog.c,v 1.55 2015/10/26 11:44:30 roy Exp $"); #endif #endif /* LIBC_SCCS and not lint */ @@ -378,17 +378,17 @@ vsyslogp_r(int pri, struct syslog_data *data, const char *msgid, */ for (t = fmt_cpy, fmt_left = FMT_LEN; (ch = *fmt) != '\0'; ++fmt) { if (ch == '%' && fmt[1] == 'm') { - char ebuf[128]; - ++fmt; - if (signal_safe || - strerror_r(saved_errno, ebuf, sizeof(ebuf))) + const char *s; + + if (signal_safe || (s = strerror(saved_errno)) == NULL) prlen = snprintf_ss(t, fmt_left, "Error %d", saved_errno); else - prlen = snprintf_ss(t, fmt_left, "%s", ebuf); + prlen = strlcpy(t, s, fmt_left); if (prlen >= fmt_left) prlen = fmt_left - 1; t += prlen; + fmt++; fmt_left -= prlen; } else if (ch == '%' && fmt[1] == '%' && fmt_left > 2) { *t++ = '%'; |
