summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYusuke Nojima <nojima718@gmail.com>2017-04-30 02:37:53 +0900
committerLennart Poettering <lennart@poettering.net>2017-04-29 19:37:53 +0200
commit5b3cc0c86aeddd4615e7e28e79aa89e5b77a6507 (patch)
tree6d475ca590c60065211bf2fa872a9e4774dd7741
parentdb7076bf78bd8e466ae927b6d3ddf64190c8d299 (diff)
journald: fix assertion failure on journal_file_link_data. (#5843)
When some error occurs during the initialization of JournalFile, the JournalFile can be left without hash tables created. When later trying to append an entry to that file, the assertion in journal_file_link_data() fails, and journald crashes. This patch fix this issue by checking *_hash_table_size in journal_file_verify_header().
-rw-r--r--src/journal/journal-file.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/journal/journal-file.c b/src/journal/journal-file.c
index 14cb01a600..243d5198d9 100644
--- a/src/journal/journal-file.c
+++ b/src/journal/journal-file.c
@@ -613,6 +613,9 @@ static int journal_file_verify_header(JournalFile *f) {
return -EBUSY;
}
+ if (f->header->field_hash_table_size == 0 || f->header->data_hash_table_size == 0)
+ return -EBADMSG;
+
/* Don't permit appending to files from the future. Because otherwise the realtime timestamps wouldn't
* be strictly ordered in the entries in the file anymore, and we can't have that since it breaks
* bisection. */