summaryrefslogtreecommitdiff
path: root/src/libsystemd/sd-journal/journal-file.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/libsystemd/sd-journal/journal-file.c')
-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;