if (EVP_MD_provider(md) == NULL) {
#if !defined(OPENSSL_NO_ENGINE)
- if (ENGINE_get_digest_engine(EVP_MD_type(md)) == NULL)
+ ENGINE *tmpeng = ENGINE_get_digest_engine(EVP_MD_type(md));
+
+ if (tmpeng != NULL)
+ ENGINE_finish(tmpeng);
+ else
#endif
fetched_md = EVP_MD_fetch(libctx, EVP_MD_name(md), propq);
}