teknoraver / rpms / systemd

Forked from rpms/systemd 5 months ago
Clone

Blame 0029-journald-fix-assertion-failure-on-journal_file_link_.patch

Zbigniew Jędrzejewski-Szmek f4a676
From f88105d528645b5c99dbe5dcbd0300948a01c9c9 Mon Sep 17 00:00:00 2001
Zbigniew Jędrzejewski-Szmek f4a676
From: Yusuke Nojima <nojima718@gmail.com>
Zbigniew Jędrzejewski-Szmek f4a676
Date: Sun, 30 Apr 2017 02:37:53 +0900
Zbigniew Jędrzejewski-Szmek f4a676
Subject: [PATCH] journald: fix assertion failure on journal_file_link_data.
Zbigniew Jędrzejewski-Szmek f4a676
 (#5843)
Zbigniew Jędrzejewski-Szmek f4a676
Zbigniew Jędrzejewski-Szmek f4a676
When some error occurs during the initialization of JournalFile,
Zbigniew Jędrzejewski-Szmek f4a676
the JournalFile can be left without hash tables created.  When later
Zbigniew Jędrzejewski-Szmek f4a676
trying to append an entry to that file, the assertion in
Zbigniew Jędrzejewski-Szmek f4a676
journal_file_link_data() fails, and journald crashes.
Zbigniew Jędrzejewski-Szmek f4a676
Zbigniew Jędrzejewski-Szmek f4a676
This patch fix this issue by checking *_hash_table_size in
Zbigniew Jędrzejewski-Szmek f4a676
journal_file_verify_header().
Zbigniew Jędrzejewski-Szmek f4a676
(cherry picked from commit 5b3cc0c86aeddd4615e7e28e79aa89e5b77a6507)
Zbigniew Jędrzejewski-Szmek f4a676
---
Zbigniew Jędrzejewski-Szmek f4a676
 src/journal/journal-file.c | 3 +++
Zbigniew Jędrzejewski-Szmek f4a676
 1 file changed, 3 insertions(+)
Zbigniew Jędrzejewski-Szmek f4a676
Zbigniew Jędrzejewski-Szmek f4a676
diff --git a/src/journal/journal-file.c b/src/journal/journal-file.c
Zbigniew Jędrzejewski-Szmek f4a676
index 14cb01a600..243d5198d9 100644
Zbigniew Jędrzejewski-Szmek f4a676
--- a/src/journal/journal-file.c
Zbigniew Jędrzejewski-Szmek f4a676
+++ b/src/journal/journal-file.c
Zbigniew Jędrzejewski-Szmek f4a676
@@ -613,6 +613,9 @@ static int journal_file_verify_header(JournalFile *f) {
Zbigniew Jędrzejewski-Szmek f4a676
                         return -EBUSY;
Zbigniew Jędrzejewski-Szmek f4a676
                 }
Zbigniew Jędrzejewski-Szmek f4a676
 
Zbigniew Jędrzejewski-Szmek f4a676
+                if (f->header->field_hash_table_size == 0 || f->header->data_hash_table_size == 0)
Zbigniew Jędrzejewski-Szmek f4a676
+                        return -EBADMSG;
Zbigniew Jędrzejewski-Szmek f4a676
+
Zbigniew Jędrzejewski-Szmek f4a676
                 /* Don't permit appending to files from the future. Because otherwise the realtime timestamps wouldn't
Zbigniew Jędrzejewski-Szmek f4a676
                  * be strictly ordered in the entries in the file anymore, and we can't have that since it breaks
Zbigniew Jędrzejewski-Szmek f4a676
                  * bisection. */