diff options
Diffstat (limited to 'main/musl/0008-fix-the-m-specifier-in-syslog.patch')
-rw-r--r-- | main/musl/0008-fix-the-m-specifier-in-syslog.patch | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/main/musl/0008-fix-the-m-specifier-in-syslog.patch b/main/musl/0008-fix-the-m-specifier-in-syslog.patch new file mode 100644 index 0000000000..acf44a9d02 --- /dev/null +++ b/main/musl/0008-fix-the-m-specifier-in-syslog.patch @@ -0,0 +1,43 @@ +From da27118157c2942d7652138b8d8b0056fc8f872f Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Cl=C3=A9ment=20Vasseur?= <clement.vasseur@gmail.com> +Date: Wed, 9 Jul 2014 14:34:18 +0200 +Subject: [PATCH] fix the %m specifier in syslog + +errno must be saved upon vsyslog entry, otherwise its value could be +changed by some libc function before reaching the %m handler in +vsnprintf. +--- + src/misc/syslog.c | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/src/misc/syslog.c b/src/misc/syslog.c +index 1cd61ce..57f1d75 100644 +--- a/src/misc/syslog.c ++++ b/src/misc/syslog.c +@@ -7,6 +7,7 @@ + #include <signal.h> + #include <string.h> + #include <pthread.h> ++#include <errno.h> + #include "libc.h" + #include "atomic.h" + +@@ -76,6 +77,7 @@ static void _vsyslog(int priority, const char *message, va_list ap) + time_t now; + struct tm tm; + char buf[256]; ++ int errno_save = errno; + int pid; + int l, l2; + +@@ -93,6 +95,7 @@ static void _vsyslog(int priority, const char *message, va_list ap) + pid = (log_opt & LOG_PID) ? getpid() : 0; + l = snprintf(buf, sizeof buf, "<%d>%s %s%s%.0d%s: ", + priority, timebuf, log_ident, "["+!pid, pid, "]"+!pid); ++ errno = errno_save; + l2 = vsnprintf(buf+l, sizeof buf - l, message, ap); + if (l2 >= 0) { + if (l2 >= sizeof buf - l) l = sizeof buf - 1; +-- +2.0.2 + |