diff options
Diffstat (limited to 'systemd-solve-that-rsyslog-reads-journal-s-object-of.patch')
-rw-r--r-- | systemd-solve-that-rsyslog-reads-journal-s-object-of.patch | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/systemd-solve-that-rsyslog-reads-journal-s-object-of.patch b/systemd-solve-that-rsyslog-reads-journal-s-object-of.patch new file mode 100644 index 0000000..2ff7fe3 --- /dev/null +++ b/systemd-solve-that-rsyslog-reads-journal-s-object-of.patch @@ -0,0 +1,66 @@ +From 6aa35d7d911b6895043f222293703ef7cf60aca1 Mon Sep 17 00:00:00 2001 +From: yefei25 <yefei25@huawei.com> +Date: Thu, 5 Mar 2020 21:45:36 +0800 +Subject: [PATCH] systemd: solve that rsyslog reads journal's object of +size 0 + + +Signed-off-by: yefei25 <yefei25@huawei.com> + +--- + src/libsystemd/sd-journal/journal-file.c | 5 +++-- + src/libsystemd/sd-journal/sd-journal.c | 7 ++++++- + 2 files changed, 9 insertions(+), 3 deletions(-) + +diff --git a/src/libsystemd/sd-journal/journal-file.c b/src/libsystemd/sd-journal/journal-file.c +index 2ead295..9962d3b 100644 +--- a/src/libsystemd/sd-journal/journal-file.c ++++ b/src/libsystemd/sd-journal/journal-file.c +@@ -898,8 +898,9 @@ static int check_object(JournalFile *f, Object *o, uint64_t offset) { + le64toh(o->tag.epoch), offset); + + break; ++ default: ++ return -EBADMSG; + } +- + return 0; + } + +@@ -1804,7 +1805,7 @@ int journal_file_data_payload( + } + + size = le64toh(READ_NOW(o->object.size)); +- if (size < journal_file_data_payload_offset(f)) ++ if (size == 0 || o->object.type == 0 || size < journal_file_data_payload_offset(f)) + return -EBADMSG; + + size -= journal_file_data_payload_offset(f); +diff --git a/src/libsystemd/sd-journal/sd-journal.c b/src/libsystemd/sd-journal/sd-journal.c +index 898218e..f6090dd 100644 +--- a/src/libsystemd/sd-journal/sd-journal.c ++++ b/src/libsystemd/sd-journal/sd-journal.c +@@ -114,6 +114,10 @@ static void init_location(Location *l, LocationType type, JournalFile *f, Object + assert(IN_SET(type, LOCATION_DISCRETE, LOCATION_SEEK)); + assert(f); + ++ if(o->object.type != OBJECT_ENTRY || o->object.size == 0){ ++ return; ++ } ++ + *l = (Location) { + .type = type, + .seqnum = le64toh(o->entry.seqnum), +@@ -851,7 +855,8 @@ static int real_journal_next(sd_journal *j, direction_t direction) { + return r; + + set_location(j, new_file, o); +- ++ if(o->object.size == 0) ++ return -EBADMSG; + return 1; + } + +-- +2.33.0 + |