From e627440b41bb0284e4892f7aa9d84c77972487e2 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Fri, 17 Aug 2012 01:19:32 +0200 Subject: [PATCH] journal: don't write tag objects if nothing has been written since the last time --- src/journal/journal-authenticate.c | 10 ++++------ src/journal/journal-verify.c | 3 ++- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/src/journal/journal-authenticate.c b/src/journal/journal-authenticate.c index ae64d3c8e..9853edb58 100644 --- a/src/journal/journal-authenticate.c +++ b/src/journal/journal-authenticate.c @@ -51,8 +51,6 @@ int journal_file_append_tag(JournalFile *f) { if (!f->hmac_running) return 0; - log_debug("Writing tag for epoch %llu\n", (unsigned long long) FSPRG_GetEpoch(f->fsprg_state)); - assert(f->hmac); r = journal_file_append_object(f, OBJECT_TAG, sizeof(struct TagObject), &o, &p); @@ -62,6 +60,10 @@ int journal_file_append_tag(JournalFile *f) { o->tag.seqnum = htole64(journal_file_tag_seqnum(f)); o->tag.epoch = htole64(FSPRG_GetEpoch(f->fsprg_state)); + log_debug("Writing tag %llu for epoch %llu\n", + (unsigned long long) le64toh(o->tag.seqnum), + (unsigned long long) FSPRG_GetEpoch(f->fsprg_state)); + /* Add the tag object itself, so that we can protect its * header. This will exclude the actual hash value in it */ r = journal_file_hmac_put_object(f, OBJECT_TAG, p); @@ -221,10 +223,6 @@ int journal_file_maybe_append_tag(JournalFile *f, uint64_t realtime) { if (r < 0) return r; - r = journal_file_hmac_start(f); - if (r < 0) - return r; - return 0; } diff --git a/src/journal/journal-verify.c b/src/journal/journal-verify.c index 8eefb841b..9907c5fe2 100644 --- a/src/journal/journal-verify.c +++ b/src/journal/journal-verify.c @@ -35,7 +35,6 @@ /* FIXME: * - * - write tag only if non-tag objects have been written * - write bit mucking test * - tag timestamps should be between entry timestamps * - output validated time ranges @@ -857,6 +856,8 @@ int journal_file_verify(JournalFile *f, const char *key) { goto fail; } + log_debug("Checking tag %llu..", (unsigned long long) le64toh(o->tag.seqnum)); + if (le64toh(o->tag.seqnum) != n_tags + 1) { log_error("Tag sequence number out of synchronization at %llu", (unsigned long long) p); r = -EBADMSG; -- 2.30.2