summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--demos/digest/BIO_f_md.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/demos/digest/BIO_f_md.c b/demos/digest/BIO_f_md.c
index 27a733b654..f9abb56766 100644
--- a/demos/digest/BIO_f_md.c
+++ b/demos/digest/BIO_f_md.c
@@ -42,7 +42,7 @@ int main(int argc, char * argv[])
BIO *bio_digest = NULL, *reading = NULL;
EVP_MD *md = NULL;
unsigned char buffer[512];
- size_t digest_size;
+ int digest_size;
char *digest_value = NULL;
int j;
@@ -68,6 +68,11 @@ int main(int argc, char * argv[])
goto cleanup;
}
digest_size = EVP_MD_get_size(md);
+ if (digest_size <= 0) {
+ fprintf(stderr, "EVP_MD_get_size returned invalid size.\n");
+ goto cleanup;
+ }
+
digest_value = OPENSSL_malloc(digest_size);
if (digest_value == NULL) {
fprintf(stderr, "Can't allocate %lu bytes for the digest value.\n", (unsigned long)digest_size);