Fix pointer passed to provider_unquery_operation
Walking through the `map` modifies the pointer passed to the `unquery`
operation.
Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Paul Dale <pauli@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/15295)
diff --git a/crypto/core_algorithm.c b/crypto/core_algorithm.c
index 50344fb..1a2e798 100644
--- a/crypto/core_algorithm.c
+++ b/crypto/core_algorithm.c
@@ -59,11 +59,10 @@
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);