summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--apps/ts.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/apps/ts.c b/apps/ts.c
index 57292e187c..96d16d4bd5 100644
--- a/apps/ts.c
+++ b/apps/ts.c
@@ -535,15 +535,18 @@ static int create_digest(BIO *input, const char *digest, const EVP_MD *md,
*md_value = OPENSSL_hexstr2buf(digest, &digest_len);
if (*md_value == NULL || md_value_len != digest_len) {
- OPENSSL_free(*md_value);
- *md_value = NULL;
BIO_printf(bio_err, "bad digest, %d bytes "
"must be specified\n", md_value_len);
- return 0;
+ goto err;
}
}
rv = md_value_len;
err:
+ if (rv <= 0) {
+ OPENSSL_free(*md_value);
+ *md_value = NULL;
+ rv = 0;
+ }
EVP_MD_CTX_free(md_ctx);
return rv;
}