From: Michael Tremer Date: Wed, 24 Aug 2022 16:06:55 +0000 (+0000) Subject: digests: Don't let computation fail if not all types are selected X-Git-Tag: 0.9.28~373 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5ea235d77681e141ad5ecf20217bff68368c6abe;p=pakfire.git digests: Don't let computation fail if not all types are selected Signed-off-by: Michael Tremer --- diff --git a/src/libpakfire/digest.c b/src/libpakfire/digest.c index 4d4dbb8ab..de99f6db6 100644 --- a/src/libpakfire/digest.c +++ b/src/libpakfire/digest.c @@ -122,40 +122,48 @@ int pakfire_digests_compute_from_file(struct pakfire* pakfire, } // SHA-512 - r = EVP_DigestUpdate(sha512_ctx, buffer, bytes_read); - if (r != 1) { - ERROR(pakfire, "EVP_Digest_Update() failed: %s\n", - ERR_error_string(ERR_get_error(), NULL)); - r = 1; - goto ERROR; + if (sha512_ctx) { + r = EVP_DigestUpdate(sha512_ctx, buffer, bytes_read); + if (r != 1) { + ERROR(pakfire, "EVP_Digest_Update() failed: %s\n", + ERR_error_string(ERR_get_error(), NULL)); + r = 1; + goto ERROR; + } } // SHA-256 - r = EVP_DigestUpdate(sha256_ctx, buffer, bytes_read); + if (sha256_ctx) { + r = EVP_DigestUpdate(sha256_ctx, buffer, bytes_read); + if (r != 1) { + ERROR(pakfire, "EVP_Digest_Update() failed: %s\n", + ERR_error_string(ERR_get_error(), NULL)); + r = 1; + goto ERROR; + } + } + } + + // Finalize SHA-512 + if (sha512_ctx) { + r = EVP_DigestFinal_ex(sha512_ctx, digests->sha512, NULL); if (r != 1) { - ERROR(pakfire, "EVP_Digest_Update() failed: %s\n", + ERROR(pakfire, "EVP_DigestFinal_ex() failed: %s\n", ERR_error_string(ERR_get_error(), NULL)); r = 1; goto ERROR; } } - // Finalize SHA-512 - r = EVP_DigestFinal_ex(sha512_ctx, digests->sha512, NULL); - if (r != 1) { - ERROR(pakfire, "EVP_DigestFinal_ex() failed: %s\n", - ERR_error_string(ERR_get_error(), NULL)); - r = 1; - goto ERROR; - } - // Finalize SHA-256 - r = EVP_DigestFinal_ex(sha256_ctx, digests->sha256, NULL); - if (r != 1) { - ERROR(pakfire, "EVP_DigestFinal_ex() failed: %s\n", - ERR_error_string(ERR_get_error(), NULL)); - r = 1; - goto ERROR; + if (sha256_ctx) { + r = EVP_DigestFinal_ex(sha256_ctx, digests->sha256, NULL); + if (r != 1) { + ERROR(pakfire, "EVP_DigestFinal_ex() failed: %s\n", + ERR_error_string(ERR_get_error(), NULL)); + r = 1; + goto ERROR; + } } ERROR: