diff options
author | Lennart Poettering <lennart@poettering.net> | 2012-08-18 01:45:39 +0200 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2012-08-18 01:45:39 +0200 |
commit | fb9a24b6b1ed5b1f42e6e350ccdb7e11800a83bd (patch) | |
tree | c71c7fc28c6bf938d009123ee425e5be248fd4e7 /src/journal/journal-verify.c | |
parent | 97147f8c1f63234470a7062d2ed0f999c0996d42 (diff) | |
download | systemd-fb9a24b6b1ed5b1f42e6e350ccdb7e11800a83bd.tar.gz |
journal: even more simple static object tests
Diffstat (limited to 'src/journal/journal-verify.c')
-rw-r--r-- | src/journal/journal-verify.c | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/src/journal/journal-verify.c b/src/journal/journal-verify.c index e3bd8ffbd7..a31817671b 100644 --- a/src/journal/journal-verify.c +++ b/src/journal/journal-verify.c @@ -134,6 +134,19 @@ static int journal_file_object_verify(JournalFile *f, Object *o) { if ((le64toh(o->object.size) - offsetof(HashTableObject, items)) / sizeof(HashItem) <= 0) return -EBADMSG; + for (i = 0; i < journal_file_hash_table_n_items(o); i++) { + if (o->hash_table.items[i].head_hash_offset != 0 && + !VALID64(le64toh(o->hash_table.items[i].head_hash_offset))) + return -EBADMSG; + if (o->hash_table.items[i].tail_hash_offset != 0 && + !VALID64(le64toh(o->hash_table.items[i].tail_hash_offset))) + return -EBADMSG; + + if ((o->hash_table.items[i].head_hash_offset != 0) != + (o->hash_table.items[i].tail_hash_offset != 0)) + return -EBADMSG; + } + break; case OBJECT_ENTRY_ARRAY: @@ -146,6 +159,11 @@ static int journal_file_object_verify(JournalFile *f, Object *o) { if (!VALID64(o->entry_array.next_entry_array_offset)) return -EBADMSG; + for (i = 0; i < journal_file_entry_array_n_items(o); i++) + if (o->entry_array.items[i] != 0 && + !VALID64(o->entry_array.items[i])) + return -EBADMSG; + break; case OBJECT_TAG: |