journal: when verifying journal files, handle empty ones nicely

A journal file that carries no objects should be considered valid.
This commit is contained in:
Lennart Poettering 2015-07-24 02:00:43 +02:00
parent dade37d403
commit 8dc37a8525

View file

@ -885,7 +885,11 @@ int journal_file_verify(
* superficial structure, headers, hashes. */
p = le64toh(f->header->header_size);
while (p != 0) {
for (;;) {
/* Early exit if there are no objects in the file, at all */
if (le64toh(f->header->tail_object_offset) == 0)
break;
if (show_progress)
draw_progress(scale_progress(0x7FFF, p, le64toh(f->header->tail_object_offset)), &last_usec);
@ -901,9 +905,6 @@ int journal_file_verify(
goto fail;
}
if (p == le64toh(f->header->tail_object_offset))
found_last = true;
n_objects ++;
r = journal_file_object_verify(f, p, o);
@ -1148,13 +1149,15 @@ int journal_file_verify(
n_weird ++;
}
if (p == le64toh(f->header->tail_object_offset))
p = 0;
else
p = p + ALIGN64(le64toh(o->object.size));
}
if (p == le64toh(f->header->tail_object_offset)) {
found_last = true;
break;
}
if (!found_last) {
p = p + ALIGN64(le64toh(o->object.size));
};
if (!found_last && le64toh(f->header->tail_object_offset) != 0) {
error(le64toh(f->header->tail_object_offset), "tail object pointer dead");
r = -EBADMSG;
goto fail;
@ -1200,19 +1203,7 @@ int journal_file_verify(
goto fail;
}
if (n_data_hash_tables != 1) {
error(0, "missing data hash table");
r = -EBADMSG;
goto fail;
}
if (n_field_hash_tables != 1) {
error(0, "missing field hash table");
r = -EBADMSG;
goto fail;
}
if (!found_main_entry_array) {
if (!found_main_entry_array && le64toh(f->header->entry_array_offset) != 0) {
error(0, "missing entry array");
r = -EBADMSG;
goto fail;