diff --git a/ext/phar/util.c b/ext/phar/util.c index 515830bf2c70a..d0e4276270370 100644 --- a/ext/phar/util.c +++ b/ext/phar/util.c @@ -1579,7 +1579,15 @@ int phar_verify_signature(php_stream *fp, size_t end_of_phar, uint32_t sig_type, } md_ctx = EVP_MD_CTX_create(); - EVP_VerifyInit(md_ctx, mdtype); + if (!md_ctx || !EVP_VerifyInit(md_ctx, mdtype)) { + if (md_ctx) { + EVP_MD_CTX_destroy(md_ctx); + } + if (error) { + spprintf(error, 0, "openssl signature could not be verified"); + } + return FAILURE; + } read_len = end_of_phar; if ((size_t)read_len > sizeof(buf)) {