summaryrefslogtreecommitdiffstats
path: root/crypto/core_algorithm.c
diff options
context:
space:
mode:
authorPetr Gotthard <petr.gotthard@centrum.cz>2021-05-15 23:29:34 +0200
committerPauli <pauli@openssl.org>2021-05-17 10:22:27 +1000
commitd7970dd963134534340ad00fa62cb1180daf5cb0 (patch)
treed13885ddc1c24ac52e8561e773e420f683584bfc /crypto/core_algorithm.c
parentf5680cd0eb7fdf95db5a55028b889ea56295dac9 (diff)
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)
Diffstat (limited to 'crypto/core_algorithm.c')
-rw-r--r--crypto/core_algorithm.c5
1 files changed, 2 insertions, 3 deletions
diff --git a/crypto/core_algorithm.c b/crypto/core_algorithm.c
index 50344fbe2d..1a2e798c2c 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);