From: Michael Tremer Date: Wed, 24 Aug 2022 17:03:04 +0000 (+0000) Subject: digest: Show some useful debugging output on mismatch X-Git-Tag: 0.9.28~371 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=073cd976c37fcf097d70a5e8e15a9868445ba38d;p=pakfire.git digest: Show some useful debugging output on mismatch Signed-off-by: Michael Tremer --- diff --git a/src/libpakfire/digest.c b/src/libpakfire/digest.c index 0e628f87f..219006087 100644 --- a/src/libpakfire/digest.c +++ b/src/libpakfire/digest.c @@ -28,6 +28,7 @@ #include #include #include +#include size_t pakfire_digest_length(const enum pakfire_digest_types digest) { switch (digest) { @@ -190,6 +191,24 @@ ERROR: return r; } +static void pakfire_digests_compare_mismatch(struct pakfire* pakfire, const char* what, + const unsigned char* digest1, const unsigned char* digest2, const size_t length) { + char* hexdigest1 = __pakfire_hexlify(digest1, length); + char* hexdigest2 = __pakfire_hexlify(digest2, length); + + DEBUG(pakfire, "%s digest does not match:\n", what); + + if (hexdigest1) + DEBUG(pakfire, " Digest 1: %s\n", hexdigest1); + if (hexdigest2) + DEBUG(pakfire, " Digest 2: %s\n", hexdigest2); + + if (hexdigest1) + free(hexdigest1); + if (hexdigest2) + free(hexdigest2); +} + int pakfire_digests_compare(struct pakfire* pakfire, const struct pakfire_digests* digests1, const struct pakfire_digests* digests2, const int types) { int r; @@ -204,7 +223,8 @@ int pakfire_digests_compare(struct pakfire* pakfire, const struct pakfire_digest if (types & PAKFIRE_DIGEST_SHA512) { r = CRYPTO_memcmp(digests1->sha512, digests2->sha512, sizeof(digests1->sha512)); if (r) { - DEBUG(pakfire, "SHA-512 digest does not match\n"); + pakfire_digests_compare_mismatch(pakfire, "SHA-512", + digests1->sha512, digests2->sha512, sizeof(digests1->sha512)); return 1; } } @@ -213,7 +233,8 @@ int pakfire_digests_compare(struct pakfire* pakfire, const struct pakfire_digest if (types & PAKFIRE_DIGEST_SHA256) { r = CRYPTO_memcmp(digests1->sha256, digests2->sha256, sizeof(digests1->sha256)); if (r) { - DEBUG(pakfire, "SHA-256 digest does not match\n"); + pakfire_digests_compare_mismatch(pakfire, "SHA-256", + digests1->sha256, digests2->sha256, sizeof(digests1->sha256)); return 1; } }