From 2c0d9cfe05e9712d44622c6bb4558e97359bfb76 Mon Sep 17 00:00:00 2001 From: Felix Fietkau Date: Mon, 6 Nov 2017 11:48:52 +0100 Subject: [PATCH] logd: move stripping of newlines to log_add() Signed-off-by: Felix Fietkau --- log/syslog.c | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/log/syslog.c b/log/syslog.c index 7e98d36..af6530c 100644 --- a/log/syslog.c +++ b/log/syslog.c @@ -26,6 +26,7 @@ #include #include #include +#include #include #include @@ -63,6 +64,7 @@ log_add(char *buf, int size, int source) struct log_head *next; int priority = 0; int ret; + char *c; /* bounce out if we don't have init'ed yet (regmatch etc will blow) */ if (!log) { @@ -70,12 +72,19 @@ log_add(char *buf, int size, int source) return; } - /* strip trailing newline */ - if (buf[size - 2] == '\n') { - buf[size - 2] = '\0'; - size -= 1; + for (c = buf; *c; c++) { + if (*c == '\n') + *c = ' '; } + c = buf + size - 2; + while (isspace(*c)) { + size--; + c--; + } + + buf[size - 1] = 0; + /* strip the priority */ ret = regexec(&pat_prio, buf, 3, matches, 0); if (!ret) { @@ -135,8 +144,6 @@ syslog_handle_fd(struct uloop_fd *fd, unsigned int events) int len; while (1) { - char *c; - len = recv(fd->fd, buf, LOG_LINE_SIZE - 1, 0); if (len < 0) { if (errno == EINTR) @@ -148,12 +155,8 @@ syslog_handle_fd(struct uloop_fd *fd, unsigned int events) break; buf[len] = 0; - for (c = buf; *c; c++) { - if (*c == '\n') - *c = ' '; - } - log_add(buf, c - buf + 1, SOURCE_SYSLOG); + log_add(buf, strlen(buf) + 1, SOURCE_SYSLOG); } } -- 2.11.0