diff options
author | Petr Gotthard <petr.gotthard@centrum.cz> | 2021-05-15 23:29:34 +0200 |
---|---|---|
committer | Pauli <pauli@openssl.org> | 2021-05-17 10:22:27 +1000 |
commit | d7970dd963134534340ad00fa62cb1180daf5cb0 (patch) | |
tree | d13885ddc1c24ac52e8561e773e420f683584bfc /crypto/core_algorithm.c | |
parent | f5680cd0eb7fdf95db5a55028b889ea56295dac9 (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.c | 5 |
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); |