From 404803e6caad2de2d8e74caab0b79ec3f030f801 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Thu, 19 Jan 2023 20:28:34 +0100 Subject: [PATCH] sd-journal: validate monotonic timestamp before returning it --- src/libsystemd/sd-journal/sd-journal.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/libsystemd/sd-journal/sd-journal.c b/src/libsystemd/sd-journal/sd-journal.c index 035d7ccef82..523e23925de 100644 --- a/src/libsystemd/sd-journal/sd-journal.c +++ b/src/libsystemd/sd-journal/sd-journal.c @@ -2190,8 +2190,8 @@ _public_ int sd_journal_get_realtime_usec(sd_journal *j, uint64_t *ret) { } _public_ int sd_journal_get_monotonic_usec(sd_journal *j, uint64_t *ret, sd_id128_t *ret_boot_id) { - Object *o; JournalFile *f; + Object *o; int r; assert_return(j, -EINVAL); @@ -2200,7 +2200,6 @@ _public_ int sd_journal_get_monotonic_usec(sd_journal *j, uint64_t *ret, sd_id12 f = j->current_file; if (!f) return -EADDRNOTAVAIL; - if (f->current_offset <= 0) return -EADDRNOTAVAIL; @@ -2221,8 +2220,12 @@ _public_ int sd_journal_get_monotonic_usec(sd_journal *j, uint64_t *ret, sd_id12 return -ESTALE; } + uint64_t t = le64toh(o->entry.monotonic); + if (!VALID_MONOTONIC(t)) + return -EBADMSG; + if (ret) - *ret = le64toh(o->entry.monotonic); + *ret = t; return 0; } -- 2.47.3