journal: refuse an entry with invalid timestamp fields
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Thu, 24 May 2018 11:11:12 +0000 (13:11 +0200)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Thu, 31 May 2018 12:30:23 +0000 (14:30 +0200)
The journal verification functions would reject such an entry. It would probably
still display fine (because we prefer _SOURCE_REALTIME_TIMESTAMP= if present), but
it seems wrong to create an entry that would not pass verification.

src/journal/journal-file.c

index da663f0..8fe4499 100644 (file)
@@ -1958,7 +1958,16 @@ int journal_file_append_entry(JournalFile *f, const dual_timestamp *ts, const st
         assert(f->header);
         assert(iovec || n_iovec == 0);
 
-        if (!ts) {
+        if (ts) {
+                if (!VALID_REALTIME(ts->realtime)) {
+                        log_debug("Invalid realtime timestamp %"PRIu64", refusing entry.", ts->realtime);
+                        return -EBADMSG;
+                }
+                if (!VALID_MONOTONIC(ts->monotonic)) {
+                        log_debug("Invalid monotomic timestamp %"PRIu64", refusing entry.", ts->monotonic);
+                        return -EBADMSG;
+                }
+        } else {
                 dual_timestamp_get(&_ts);
                 ts = &_ts;
         }