diff --git a/src/libsystemd/sd-journal/journal-file.c b/src/libsystemd/sd-journal/journal-file.c index fecddb932f..acceea7770 100644 --- a/src/libsystemd/sd-journal/journal-file.c +++ b/src/libsystemd/sd-journal/journal-file.c @@ -2740,7 +2740,9 @@ static int bump_entry_array( if (direction == DIRECTION_DOWN) { assert(o); - assert(o->object.type == OBJECT_ENTRY_ARRAY); + + if (o->object.type != OBJECT_ENTRY_ARRAY) + return -EBADMSG; *ret = le64toh(o->entry_array.next_entry_array_offset); } else { @@ -3241,9 +3243,11 @@ static int generic_array_bisect_for_data( assert(f); assert(d); - assert(d->object.type == OBJECT_DATA); assert(test_object); + if (d->object.type != OBJECT_DATA) + return -EBADMSG; + n = le64toh(d->data.n_entries); if (n <= 0) return 0; @@ -3609,9 +3613,11 @@ int journal_file_move_to_entry_for_data( assert(f); assert(d); - assert(d->object.type == OBJECT_DATA); assert(IN_SET(direction, DIRECTION_DOWN, DIRECTION_UP)); + if (d->object.type != OBJECT_DATA) + return -EBADMSG; + /* FIXME: fix return value assignment. */ /* This returns the first (when the direction is down, otherwise the last) entry linked to the @@ -3671,7 +3677,9 @@ int journal_file_move_to_entry_by_offset_for_data( assert(f); assert(d); - assert(d->object.type == OBJECT_DATA); + + if (d->object.type != OBJECT_DATA) + return -EBADMSG; return generic_array_bisect_for_data( f, @@ -3697,7 +3705,9 @@ int journal_file_move_to_entry_by_monotonic_for_data( assert(f); assert(d); - assert(d->object.type == OBJECT_DATA); + + if (d->object.type != OBJECT_DATA) + return -EBADMSG; /* First, pin the given data object, before reading the _BOOT_ID= data object below. */ r = journal_file_pin_object(f, d); @@ -3763,7 +3773,9 @@ int journal_file_move_to_entry_by_seqnum_for_data( assert(f); assert(d); - assert(d->object.type == OBJECT_DATA); + + if (d->object.type != OBJECT_DATA) + return -EBADMSG; return generic_array_bisect_for_data( f, @@ -3783,7 +3795,9 @@ int journal_file_move_to_entry_by_realtime_for_data( assert(f); assert(d); - assert(d->object.type == OBJECT_DATA); + + if (d->object.type != OBJECT_DATA) + return -EBADMSG; return generic_array_bisect_for_data( f,