]> git.ipfire.org Git - thirdparty/libarchive.git/commitdiff
archive_digest: check return value of EVP_DigestInit() 1717/head
authorEmil Velikov <emil.l.velikov@gmail.com>
Tue, 5 Apr 2022 10:36:02 +0000 (11:36 +0100)
committerEmil Velikov <emil.l.velikov@gmail.com>
Tue, 5 Apr 2022 10:40:37 +0000 (11:40 +0100)
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>
libarchive/archive_digest.c

index 410df01563df45eb0d7248f1137fd9298e3b1ee4..a7bd5f0286a486d8d82666b78e80fdd378f67a9d 100644 (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);
 }