From: Petr Gotthard Date: Sat, 15 May 2021 21:29:34 +0000 (+0200) Subject: Fix pointer passed to provider_unquery_operation X-Git-Tag: openssl-3.0.0-alpha17~84 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=d7970dd963134534340ad00fa62cb1180daf5cb0;p=thirdparty%2Fopenssl.git Fix pointer passed to provider_unquery_operation Walking through the `map` modifies the pointer passed to the `unquery` operation. Reviewed-by: Matt Caswell Reviewed-by: Paul Dale (Merged from https://github.com/openssl/openssl/pull/15295) --- diff --git a/crypto/core_algorithm.c b/crypto/core_algorithm.c index 50344fbe2dc..1a2e798c2c2 100644 --- a/crypto/core_algorithm.c +++ b/crypto/core_algorithm.c @@ -59,11 +59,10 @@ static int algorithm_do_this(OSSL_PROVIDER *provider, void *cbdata) map = ossl_provider_query_operation(provider, cur_operation, &no_store); if (map != NULL) { - while (map->algorithm_names != NULL) { - const OSSL_ALGORITHM *thismap = map++; + const OSSL_ALGORITHM *thismap; + for (thismap = map; thismap->algorithm_names != NULL; thismap++) data->fn(provider, thismap, no_store, data->data); - } } ossl_provider_unquery_operation(provider, cur_operation, map);