]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
Revert "sd-journal: introduce simple loop detection for entry array objects" 27499/head
authorYu Watanabe <watanabe.yu+github@gmail.com>
Tue, 2 May 2023 16:30:23 +0000 (01:30 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Tue, 2 May 2023 21:41:25 +0000 (06:41 +0900)
This reverts commit a8fbcc0e3c033a43e511550052cace6b0dcf3df7.

The commit is not necessary, as the invalid entry array object is
filtered earlier by the previous commit.

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

index 8827e9b939b65bbbe6172a402a1fc8341103ef83..432a47c4ee7d1491b6d6ef621a1116c20f89a089 100644 (file)
@@ -2592,18 +2592,10 @@ static int bump_entry_array(
         assert(offset);
         assert(ret);
 
-        /* Return 1 when a non-zero offset found, 0 when the offset is zero.
-         * Here, we assume that the offset of each entry array object is in strict increasing order. */
-
         if (direction == DIRECTION_DOWN) {
                 assert(o);
-
-                p = le64toh(o->entry_array.next_entry_array_offset);
-                if (p > 0 && p <= offset)
-                        return -EBADMSG;
-
-                *ret = p;
-                return p > 0;
+                *ret = le64toh(o->entry_array.next_entry_array_offset);
+                return 0;
         }
 
         /* Entry array chains are a singly linked list, so to find the previous array in the chain, we have
@@ -2618,8 +2610,6 @@ static int bump_entry_array(
 
                 q = p;
                 p = le64toh(o->entry_array.next_entry_array_offset);
-                if (p <= q)
-                        return -EBADMSG;
         }
 
         /* If we can't find the previous entry array in the entry array chain, we're likely dealing with a
@@ -2628,7 +2618,8 @@ static int bump_entry_array(
                 return -EBADMSG;
 
         *ret = q;
-        return 1; /* found */
+
+        return 0;
 }
 
 static int generic_array_get(
@@ -2671,7 +2662,7 @@ static int generic_array_get(
                          * array and start iterating entries from there. */
 
                         r = bump_entry_array(f, NULL, a, first, DIRECTION_UP, &a);
-                        if (r <= 0)
+                        if (r < 0)
                                 return r;
 
                         i = UINT64_MAX;
@@ -2687,10 +2678,7 @@ static int generic_array_get(
 
                 i -= k;
                 t += k;
-
-                r = bump_entry_array(f, o, a, first, DIRECTION_DOWN, &a);
-                if (r <= 0)
-                        return r;
+                a = le64toh(o->entry_array.next_entry_array_offset);
         }
 
         /* If we've found the right location, now look for the first non-corrupt entry object (in the right
@@ -2740,7 +2728,7 @@ static int generic_array_get(
                 } while (bump_array_index(&i, direction, k) > 0);
 
                 r = bump_entry_array(f, o, a, first, direction, &a);
-                if (r <= 0)
+                if (r < 0)
                         return r;
 
                 t += k;