From: Yu Watanabe Date: Tue, 2 May 2023 16:30:23 +0000 (+0900) Subject: Revert "sd-journal: introduce simple loop detection for entry array objects" X-Git-Tag: v254-rc1~571^2 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=refs%2Fpull%2F27499%2Fhead;p=thirdparty%2Fsystemd.git Revert "sd-journal: introduce simple loop detection for entry array objects" This reverts commit a8fbcc0e3c033a43e511550052cace6b0dcf3df7. The commit is not necessary, as the invalid entry array object is filtered earlier by the previous commit. --- diff --git a/src/libsystemd/sd-journal/journal-file.c b/src/libsystemd/sd-journal/journal-file.c index 8827e9b939b..432a47c4ee7 100644 --- a/src/libsystemd/sd-journal/journal-file.c +++ b/src/libsystemd/sd-journal/journal-file.c @@ -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;