summaryrefslogtreecommitdiff
path: root/cipher/md.c
diff options
context:
space:
mode:
Diffstat (limited to 'cipher/md.c')
-rw-r--r--cipher/md.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/cipher/md.c b/cipher/md.c
index 0414dcb0..d1d08123 100644
--- a/cipher/md.c
+++ b/cipher/md.c
@@ -948,6 +948,8 @@ _gcry_md_hash_buffer (int algo, void *digest,
_gcry_sha1_hash_buffer (digest, buffer, length);
else if (algo == GCRY_MD_RMD160 && !fips_mode () )
_gcry_rmd160_hash_buffer (digest, buffer, length);
+ else if (md_digest_length (algo) == 0)
+ ; /* Nothing to do for hashes without a fixed output length. */
else
{
/* For the others we do not have a fast function, so we use the
@@ -1007,6 +1009,9 @@ _gcry_md_hash_buffers (int algo, unsigned int flags, void *digest,
if (hmac && iovcnt < 1)
return GPG_ERR_INV_ARG;
+ if (md_digest_length (algo) == 0)
+ return GPG_ERR_INV_ARG;
+
if (algo == GCRY_MD_SHA1 && !hmac)
_gcry_sha1_hash_buffers (digest, iov, iovcnt);
else