archive_digest: check return value of EVP_DigestInit()

The function returns 0 on error, which is seemingly very common with
OpenSSL 3.0 and rmd160.

Just error check the lot, so we don't get even more random failures with
future releases of OpenSSL.

Fixes #1549

Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
This commit is contained in:
Emil Velikov committed 2022-04-05 11:40:37 +01:00
1 parent db71455371
commit 87fbead30b
1 file changed
+12 -6
+12 -6
View File
@@ -243,7 +243,8 @@ __archive_md5init(archive_md5_ctx *ctx)
{
if ((*ctx = EVP_MD_CTX_new()) == NULL)
return (ARCHIVE_FAILED);
EVP_DigestInit(*ctx, EVP_md5());
if (!EVP_DigestInit(*ctx, EVP_md5()))
return (ARCHIVE_FAILED);
return (ARCHIVE_OK);
}
@@ -434,7 +435,8 @@ __archive_ripemd160init(archive_rmd160_ctx *ctx)
{
if ((*ctx = EVP_MD_CTX_new()) == NULL)
return (ARCHIVE_FAILED);
EVP_DigestInit(*ctx, EVP_ripemd160());
if (!EVP_DigestInit(*ctx, EVP_ripemd160()))
return (ARCHIVE_FAILED);
return (ARCHIVE_OK);
}
@@ -624,7 +626,8 @@ __archive_sha1init(archive_sha1_ctx *ctx)
{
if ((*ctx = EVP_MD_CTX_new()) == NULL)
return (ARCHIVE_FAILED);
EVP_DigestInit(*ctx, EVP_sha1());
if (!EVP_DigestInit(*ctx, EVP_sha1()))
return (ARCHIVE_FAILED);
return (ARCHIVE_OK);
}
@@ -887,7 +890,8 @@ __archive_sha256init(archive_sha256_ctx *ctx)
{
if ((*ctx = EVP_MD_CTX_new()) == NULL)
return (ARCHIVE_FAILED);
EVP_DigestInit(*ctx, EVP_sha256());
if (!EVP_DigestInit(*ctx, EVP_sha256()))
return (ARCHIVE_FAILED);
return (ARCHIVE_OK);
}
@@ -1122,7 +1126,8 @@ __archive_sha384init(archive_sha384_ctx *ctx)
{
if ((*ctx = EVP_MD_CTX_new()) == NULL)
return (ARCHIVE_FAILED);
EVP_DigestInit(*ctx, EVP_sha384());
if (!EVP_DigestInit(*ctx, EVP_sha384()))
return (ARCHIVE_FAILED);
return (ARCHIVE_OK);
}
@@ -1381,7 +1386,8 @@ __archive_sha512init(archive_sha512_ctx *ctx)
{
if ((*ctx = EVP_MD_CTX_new()) == NULL)
return (ARCHIVE_FAILED);
EVP_DigestInit(*ctx, EVP_sha512());
if (!EVP_DigestInit(*ctx, EVP_sha512()))
return (ARCHIVE_FAILED);
return (ARCHIVE_OK);
}