summaryrefslogtreecommitdiff
path: root/src/libsystemd
diff options
context:
space:
mode:
authorYu Watanabe <watanabe.yu+github@gmail.com>2023-05-03 01:30:23 +0900
committerYu Watanabe <watanabe.yu+github@gmail.com>2023-05-03 06:41:25 +0900
commitde6eb806ff1a4b586b23ccb399b827172076cfbe (patch)
tree3ef3ed36f8d709775f4088f30c06e5bef0d062dc /src/libsystemd
parentb5335da7a54d6597a1539b56b5a0cb1f8d36dfdd (diff)
downloadsystemd-de6eb806ff1a4b586b23ccb399b827172076cfbe.tar.gz
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.
Diffstat (limited to 'src/libsystemd')
-rw-r--r--src/libsystemd/sd-journal/journal-file.c26
1 files changed, 7 insertions, 19 deletions
diff --git a/src/libsystemd/sd-journal/journal-file.c b/src/libsystemd/sd-journal/journal-file.c
index 8827e9b939..432a47c4ee 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;