From d7970dd963134534340ad00fa62cb1180daf5cb0 Mon Sep 17 00:00:00 2001 From: Petr Gotthard Date: Sat, 15 May 2021 23:29:34 +0200 Subject: [PATCH] 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) --- crypto/core_algorithm.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) 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); -- 2.47.3