From: Yu Watanabe Date: Wed, 15 Mar 2023 06:12:41 +0000 (+0900) Subject: sd-journal: fix segfault X-Git-Tag: v254-rc1~1004 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=3b1b0f1aeb484a13ce6b730ad30f1e8b449e38ea;p=thirdparty%2Fsystemd.git sd-journal: fix segfault Unfortunately, journal_file_next_entry() returns 0 when the next entry not found. The commit cc938e4a0ab67707e489cc3970a8557ad89801ca adds FIXME comment about that. We should really fix that, but the function and its return value are used in many place, hence checking all usecases is not easy. So, let's workaround that here, and handle the 0 return value by the caller. Follow-up for 34af74946e8853411f18120007ebaca6549b2a52. Fixes #26822. --- diff --git a/src/libsystemd/sd-journal/sd-journal.c b/src/libsystemd/sd-journal/sd-journal.c index 6804cf4069e..8964140f7ae 100644 --- a/src/libsystemd/sd-journal/sd-journal.c +++ b/src/libsystemd/sd-journal/sd-journal.c @@ -2436,6 +2436,8 @@ static int journal_file_read_tail_timestamp(sd_journal *j, JournalFile *f) { r = journal_file_next_entry(f, 0, DIRECTION_UP, &o, NULL); if (r < 0) return r; + if (r == 0) + return -ENODATA; id = o->entry.boot_id; mo = le64toh(o->entry.monotonic);