]> git.ipfire.org Git - pakfire.git/commitdiff
downloader: Fix digest computation
authorMichael Tremer <michael.tremer@ipfire.org>
Fri, 4 Nov 2022 18:20:47 +0000 (18:20 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Fri, 4 Nov 2022 18:20:47 +0000 (18:20 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/libpakfire/downloader.c

index d7c075182f69720acadd3fe82375598726c87588..23ce23b5302b92d2dd59e6ea1edd1d6f84b763f4 100644 (file)
@@ -362,8 +362,10 @@ static struct pakfire_transfer* pakfire_downloader_create_transfer(
        }
 
        // Copy the expected digest
-       if (transfer->md && expected_digest)
+       if (transfer->md && expected_digest) {
                memcpy(transfer->expected_digest, expected_digest, expected_digest_length);
+               transfer->expected_digest_length = expected_digest_length;
+       }
 
        // Allocate handle
        transfer->handle = curl_easy_init();
@@ -621,11 +623,14 @@ static int pakfire_transfer_done(struct pakfire_downloader* downloader,
                        char* expected_hexdigest = __pakfire_hexlify(transfer->expected_digest,
                                transfer->expected_digest_length);
 
-                       ERROR(downloader->pakfire, "Download checksum didn't match:\n  Expected: %s\n  Computed: %s\n",
-                               expected_hexdigest, computed_hexdigest);
+                       ERROR(downloader->pakfire, "Download checksum for %s didn't match:\n", transfer->url);
+                       ERROR(downloader->pakfire, "  Expected: %s\n", expected_hexdigest);
+                       ERROR(downloader->pakfire, "  Computed: %s\n", computed_hexdigest);
 
-                       free(computed_hexdigest);
-                       free(expected_hexdigest);
+                       if (computed_hexdigest)
+                               free(computed_hexdigest);
+                       if (expected_hexdigest)
+                               free(expected_hexdigest);
 
                        // Make this download fail
                        r = pakfire_transfer_fail(downloader, transfer, 0);