From d9e2e1abd8ea487ae05ba149c0c8b9f61e47b50d Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Fri, 4 Nov 2022 18:21:11 +0000 Subject: [PATCH] archive: Show better error when digest check fails Signed-off-by: Michael Tremer --- src/libpakfire/archive.c | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/src/libpakfire/archive.c b/src/libpakfire/archive.c index 7a61b5d32..f33d1a28b 100644 --- a/src/libpakfire/archive.c +++ b/src/libpakfire/archive.c @@ -959,6 +959,7 @@ PAKFIRE_EXPORT ssize_t pakfire_archive_get_size(struct pakfire_archive* archive) int pakfire_archive_check_digest(struct pakfire_archive* archive, const enum pakfire_digest_types type, const unsigned char* digest, const size_t length) { + size_t computed_length = 0; int r; // Compute the digest @@ -970,7 +971,22 @@ int pakfire_archive_check_digest(struct pakfire_archive* archive, r = pakfire_digests_compare_one(archive->pakfire, &archive->digests, type, digest, length); if (r) { - ERROR(archive->pakfire, "Archive digest does not match"); + const unsigned char* computed_digest = pakfire_digest_get( + &archive->digests, type, &computed_length); + + char* expected_hexdigest = __pakfire_hexlify(digest, length); + char* computed_hexdigest = __pakfire_hexlify(computed_digest, computed_length); + + ERROR(archive->pakfire, "Archive digest does not match for %s:\n", archive->path); + ERROR(archive->pakfire, " Expected: %s\n", expected_hexdigest); + ERROR(archive->pakfire, " Computed: %s\n", computed_hexdigest); + + if (expected_hexdigest) + free(expected_hexdigest); + if (computed_hexdigest) + free(computed_hexdigest); + + return r; } return r; -- 2.39.5