chiark / gitweb /
sd-journal: properly parse cursor strings
[elogind.git] / src / journal / journal-verify.c
index 90739a66c2cde0c2283540764b78fe3a3915c090..7d2e5eb1c24bf4e455484cd0626dc2b93d5fdf01 100644 (file)
@@ -63,6 +63,7 @@ static int journal_file_object_verify(JournalFile *f, Object *o) {
                 h1 = le64toh(o->data.hash);
 
                 if (o->object.flags & OBJECT_COMPRESSED) {
+#ifdef HAVE_XZ
                         void *b = NULL;
                         uint64_t alloc = 0, b_size;
 
@@ -73,6 +74,9 @@ static int journal_file_object_verify(JournalFile *f, Object *o) {
 
                         h2 = hash64(b, b_size);
                         free(b);
+#else
+                        return -EPROTONOSUPPORT;
+#endif
                 } else
                         h2 = hash64(o->data.payload, le64toh(o->object.size) - offsetof(Object, data.payload));
 
@@ -249,7 +253,7 @@ static int contains_uint64(MMapCache *m, int fd, uint64_t n, uint64_t p) {
 
                 c = (a + b) / 2;
 
-                r = mmap_cache_get(m, fd, PROT_READ|PROT_WRITE, 0, c * sizeof(uint64_t), sizeof(uint64_t), (void **) &z);
+                r = mmap_cache_get(m, fd, PROT_READ|PROT_WRITE, 0, false, c * sizeof(uint64_t), sizeof(uint64_t), NULL, (void **) &z);
                 if (r < 0)
                         return r;
 
@@ -261,9 +265,8 @@ static int contains_uint64(MMapCache *m, int fd, uint64_t n, uint64_t p) {
 
                 if (p < *z)
                         b = c;
-                else {
+                else
                         a = c;
-                }
         }
 
         return 0;
@@ -663,7 +666,7 @@ static int verify_entry_array(
 int journal_file_verify(
                 JournalFile *f,
                 const char *key,
-                usec_t *first_validated, usec_t *last_validated, usec_t *last_contained,
+                usec_t *first_contained, usec_t *last_validated, usec_t *last_contained,
                 bool show_progress) {
         int r;
         Object *o;
@@ -956,7 +959,7 @@ int journal_file_verify(
                                         if (r < 0)
                                                 goto fail;
 
-                                        r = journal_file_hmac_put_object(f, -1, q);
+                                        r = journal_file_hmac_put_object(f, -1, o, q);
                                         if (r < 0)
                                                 goto fail;
 
@@ -1118,8 +1121,8 @@ int journal_file_verify(
         close_nointr_nofail(entry_fd);
         close_nointr_nofail(entry_array_fd);
 
-        if (first_validated)
-                *first_validated = last_tag_realtime ? le64toh(f->header->head_entry_realtime) : 0;
+        if (first_contained)
+                *first_contained = le64toh(f->header->head_entry_realtime);
         if (last_validated)
                 *last_validated = last_sealed_realtime;
         if (last_contained)