From: Michael Tremer Date: Thu, 22 Jul 2021 12:16:57 +0000 (+0000) Subject: archive: Show hexdigests if there was a checksum mismatch X-Git-Tag: 0.9.28~1026 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=fa106e1b156e9eae9ab079e5a6b55dcdbc555ab6;p=pakfire.git archive: Show hexdigests if there was a checksum mismatch Signed-off-by: Michael Tremer --- diff --git a/src/libpakfire/archive.c b/src/libpakfire/archive.c index d3b10f960..c6e7b83e8 100644 --- a/src/libpakfire/archive.c +++ b/src/libpakfire/archive.c @@ -1383,6 +1383,19 @@ static int pakfire_archive_verify_file(struct pakfire_archive* archive, // Handle mismatches if (r) { ERROR(archive->pakfire, "Checksum of %s did not match\n", chksum->path); + + char* hexdigest_expected = pakfire_hexlify((*v)->digest); + if (hexdigest_expected) { + ERROR(archive->pakfire, " Expected: %s\n", hexdigest_expected); + free(hexdigest_expected); + } + + char* hexdigest_computed = pakfire_hexlify(digest); + if (hexdigest_computed) { + ERROR(archive->pakfire, " Computed: %s\n", hexdigest_computed); + free(hexdigest_computed); + } + goto ERROR; } } diff --git a/src/libpakfire/include/pakfire/util.h b/src/libpakfire/include/pakfire/util.h index fa0ffaa57..a066d0c94 100644 --- a/src/libpakfire/include/pakfire/util.h +++ b/src/libpakfire/include/pakfire/util.h @@ -62,7 +62,7 @@ char* pakfire_remove_trailing_newline(char* str); int pakfire_read_file_into_buffer(FILE* f, char** buffer, size_t* len); #define pakfire_hexlify(digest) __pakfire_hexlify(digest, sizeof(digest)) -char* __pakfire_hexlify(const char* digest, const size_t length); +char* __pakfire_hexlify(const unsigned char* digest, const size_t length); #define pakfire_unhexlify(dst, src) __pakfire_unhexlify(dst, sizeof(dst), src) int __pakfire_unhexlify(unsigned char* dst, const size_t l, const char* src); diff --git a/src/libpakfire/util.c b/src/libpakfire/util.c index 5c18f02ea..42ea4f7dd 100644 --- a/src/libpakfire/util.c +++ b/src/libpakfire/util.c @@ -619,7 +619,7 @@ int pakfire_tty_is_noninteractive(void) { return 0; } -char* __pakfire_hexlify(const char* digest, const size_t length) { +char* __pakfire_hexlify(const unsigned char* digest, const size_t length) { const char* hexdigits = "0123456789abcdef"; char* s = malloc((length * 2) + 1);