summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2018-05-20 22:45:22 +0200
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2018-05-31 14:30:23 +0200
commit1e448731f51865184ba988b246d02823a9284d6c (patch)
tree1fd5a78cf210de23e88eec1ef953425f1b315874
parent9be391d4dbe1e5f83e44486c1a2a91ab0327be6c (diff)
downloadsystemd-1e448731f51865184ba988b246d02823a9284d6c.tar.gz
basic/journal-importer: reject any field names that journald would reject
$ build-asan/fuzz-journal-remote test/fuzz-regressions/fuzz-journal-remote/crash-96dee870ea66d03e89ac321eee28ea63a9b9aa45 ... Ignoring invalid field: "S\020" Ignoring invalid field: "S\020" ... If the field name includes nul bytes, we won't print all of the name. But that seems enough of a corner case to ignore.
-rw-r--r--src/basic/journal-importer.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/basic/journal-importer.c b/src/basic/journal-importer.c
index 1d5f84af4d..86aa834525 100644
--- a/src/basic/journal-importer.c
+++ b/src/basic/journal-importer.c
@@ -14,6 +14,7 @@
#include "io-util.h"
#include "journal-file.h"
#include "journal-importer.h"
+#include "journal-util.h"
#include "parse-util.h"
#include "string-util.h"
#include "unaligned.h"
@@ -347,6 +348,16 @@ int journal_importer_process_data(JournalImporter *imp) {
/* chomp newline */
n--;
+ if (!journal_field_valid(line, sep - line, true)) {
+ char buf[64], *t;
+
+ t = strndupa(line, sep - line);
+ log_debug("Ignoring invalid field: \"%s\"",
+ cellescape(buf, t));
+
+ return 0;
+ }
+
r = iovw_put(&imp->iovw, line, n);
if (r < 0)
return r;