From: Daan De Meyer Date: Wed, 17 Nov 2021 16:46:29 +0000 (+0000) Subject: journal: Skip corrupt Data objects in sd_journal_get_data() X-Git-Tag: v250-rc1~210^2 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=refs%2Fpull%2F21420%2Fhead;p=thirdparty%2Fsystemd.git journal: Skip corrupt Data objects in sd_journal_get_data() Similar to the change we made for sd_journal_enumerate_data(), let's skip corrupt entry items and data objects in sd_journal_get_data(). --- diff --git a/src/libsystemd/sd-journal/sd-journal.c b/src/libsystemd/sd-journal/sd-journal.c index e440d3c560c..738c6974687 100644 --- a/src/libsystemd/sd-journal/sd-journal.c +++ b/src/libsystemd/sd-journal/sd-journal.c @@ -2306,11 +2306,17 @@ _public_ int sd_journal_get_data(sd_journal *j, const char *field, const void ** p = le64toh(o->entry.items[i].object_offset); le_hash = o->entry.items[i].hash; r = journal_file_move_to_object(f, OBJECT_DATA, p, &d); + if (r == -EBADMSG) { + log_debug("Entry item %"PRIu64" data object is bad, skipping over it.", i); + continue; + } if (r < 0) return r; - if (le_hash != d->data.hash) - return -EBADMSG; + if (le_hash != d->data.hash) { + log_debug("Entry item %"PRIu64" hash is bad, skipping over it.", i); + continue; + } l = le64toh(d->object.size) - offsetof(Object, data.payload);