summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorroy <roy@NetBSD.org>2015-10-26 11:44:30 +0000
committerroy <roy@NetBSD.org>2015-10-26 11:44:30 +0000
commit89f5f44a53e20baa9028bb8dfe7c7bfae37337ce (patch)
treecaab6704d54a5f499bd0ed557d3c492df0ef405b /lib
parent077fdb162818b32d3927c2cd2098d14558399bd4 (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.c14
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++ = '%';