X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fjournal%2Fjournal-verify.c;h=1a67d5a04bddff7eff3f32a5dfdd166320bfc022;hb=6524990fdc98370ecba5d9f73e67161e8798c010;hp=90739a66c2cde0c2283540764b78fe3a3915c090;hpb=369f0589218a874a88bc69c5481d8f90f987b7dd;p=elogind.git diff --git a/src/journal/journal-verify.c b/src/journal/journal-verify.c index 90739a66c..1a67d5a04 100644 --- a/src/journal/journal-verify.c +++ b/src/journal/journal-verify.c @@ -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)); @@ -174,7 +178,7 @@ static void draw_progress(uint64_t p, usec_t *last_usec) { unsigned n, i, j, k; usec_t z, x; - if (!isatty(STDOUT_FILENO)) + if (!on_tty()) return; z = now(CLOCK_MONOTONIC); @@ -208,7 +212,7 @@ static void draw_progress(uint64_t p, usec_t *last_usec) { static void flush_progress(void) { unsigned n, i; - if (!isatty(STDOUT_FILENO)) + if (!on_tty()) return; n = (3 * columns()) / 4; @@ -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,11 +666,12 @@ 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; - uint64_t p = 0, last_tag = 0, last_epoch = 0, last_tag_realtime = 0, last_sealed_realtime = 0; + uint64_t p = 0, last_epoch = 0, last_tag_realtime = 0, last_sealed_realtime = 0; + uint64_t entry_seqnum = 0, entry_monotonic = 0, entry_realtime = 0; sd_id128_t entry_boot_id; bool entry_seqnum_set = false, entry_monotonic_set = false, entry_realtime_set = false, found_main_entry_array = false; @@ -679,7 +683,9 @@ int journal_file_verify( entry_array_path[] = "/var/tmp/journal-entry-array-XXXXXX"; unsigned i; bool found_last; - +#ifdef HAVE_GCRYPT + uint64_t last_tag = 0; +#endif assert(f); if (key) { @@ -956,7 +962,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; @@ -978,9 +984,10 @@ int journal_file_verify( last_tag_realtime = rt; last_sealed_realtime = entry_realtime; } -#endif last_tag = p + ALIGN64(le64toh(o->object.size)); +#endif + last_epoch = le64toh(o->tag.epoch); n_tags ++; @@ -1118,8 +1125,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)