]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
sd-journal: read entry array object again
authorYu Watanabe <watanabe.yu+github@gmail.com>
Mon, 1 May 2023 05:12:38 +0000 (14:12 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Mon, 1 May 2023 05:25:38 +0000 (14:25 +0900)
Otherwise, the object may be invalidated by the previous call of
journal_file_move_to_object().

src/libsystemd/sd-journal/journal-file.c

index 81bedfd7221c96ca7e2fe17464e60dd8f25d5f27..c59d2b07c66c5f0586677ab4b2e5f9da562aaaed 100644 (file)
@@ -2715,8 +2715,13 @@ static int generic_array_get(
                                 return r;
 
                         /* OK, so this entry is borked. Most likely some entry didn't get synced to
-                        * disk properly, let's see if the next one might work for us instead. */
+                         * disk properly, let's see if the next one might work for us instead. */
                         log_debug_errno(r, "Entry item %" PRIu64 " is bad, skipping over it.", i);
+
+                        r = journal_file_move_to_object(f, OBJECT_ENTRY_ARRAY, a, &o);
+                        if (r < 0)
+                                return r;
+
                 } while (bump_array_index(&i, direction, k) > 0);
 
                 r = bump_entry_array(f, o, a, first, direction, &a);