]> git.ipfire.org Git - pakfire.git/commitdiff
archive: Show hexdigests if there was a checksum mismatch
authorMichael Tremer <michael.tremer@ipfire.org>
Thu, 22 Jul 2021 12:16:57 +0000 (12:16 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Thu, 22 Jul 2021 12:16:57 +0000 (12:16 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/libpakfire/archive.c
src/libpakfire/include/pakfire/util.h
src/libpakfire/util.c

index d3b10f96040f2102e273a2361d07d290bf8cd937..c6e7b83e8813b12d19f2c4a29df35cc21eda97b4 100644 (file)
@@ -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;
                }
        }
index fa0ffaa57ec1fe040e4c28df616a870dbccc4f6c..a066d0c94d0e398bf7031d08f9a1555fa7263aaa 100644 (file)
@@ -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);
 
index 5c18f02eaf91552f1d2e9ba8c27e21b1550466fe..42ea4f7dd8a688ef4287d31ec6249bab20009104 100644 (file)
@@ -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);