summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSami Kerola2016-07-18 22:49:27 +0200
committerKarel Zak2016-07-19 11:02:48 +0200
commitf1f5f21ee664c232df1454a322f2570301ee1add (patch)
tree3e789933e3612da77c1e44f7729e91a514918d89
parenttailf: Fix previously adjusted segfault patch (diff)
downloadkernel-qcow2-util-linux-f1f5f21ee664c232df1454a322f2570301ee1add.tar.gz
kernel-qcow2-util-linux-f1f5f21ee664c232df1454a322f2570301ee1add.tar.xz
kernel-qcow2-util-linux-f1f5f21ee664c232df1454a322f2570301ee1add.zip
logger: remove trailing spaces when outputing to journal
Issues: 1. Whitespace-ish \r is not stripped, while it should be. 2. In journal \r is considered unprintable. Lennart: "it is the duty of the client side to drop the trailing whitespace, which "logger" doesn't do". Reported-by: Ivan Babrou <ibobrik@gmail.com> Explained-by: Lennart Poettering <lennart@poettering.net> Reference: https://github.com/systemd/systemd/issues/3416 Signed-off-by: Sami Kerola <kerolasa@iki.fi>
-rw-r--r--misc-utils/logger.c7
-rw-r--r--tests/expected/logger/journald1
2 files changed, 2 insertions, 6 deletions
diff --git a/misc-utils/logger.c b/misc-utils/logger.c
index 9f2940cb2..70fac68bb 100644
--- a/misc-utils/logger.c
+++ b/misc-utils/logger.c
@@ -341,14 +341,11 @@ static int journald_entry(struct logger_ctl *ctl, FILE *fp)
for (lines = 0; /* nothing */ ; lines++) {
buf = NULL;
sz = getline(&buf, &dummy, fp);
- if (sz == -1) {
+ if (sz == -1 ||
+ (sz = rtrim_whitespace((unsigned char *) buf)) == 0) {
free(buf);
break;
}
- if (0 < sz && buf[sz - 1] == '\n') {
- sz--;
- buf[sz] = '\0';
- }
if (lines == vectors) {
vectors *= 2;
if (IOV_MAX < vectors)
diff --git a/tests/expected/logger/journald b/tests/expected/logger/journald
index 75bd0f3e7..354628d16 100644
--- a/tests/expected/logger/journald
+++ b/tests/expected/logger/journald
@@ -1,4 +1,3 @@
MESSAGE_ID=b8f74e14bc714bfc8040a5106dc9376a
MESSAGE=a b c 1 2 3
-
ret: 0