Avoid freeing a provider that was not up-ref-ed before.
Fixes #17292
Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/17295)
OSSL_PROVIDER tmpl = { 0, };
OSSL_PROVIDER *actualtmp = NULL;
+ if (actualprov != NULL)
+ *actualprov = NULL;
+
if ((store = get_provider_store(prov->libctx)) == NULL)
return 0;
err:
CRYPTO_THREAD_unlock(store->lock);
if (actualprov != NULL)
- ossl_provider_free(actualtmp);
+ ossl_provider_free(*actualprov);
return 0;
}