summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPetr Gotthard <petr.gotthard@centrum.cz>2020-12-17 20:13:00 +0100
committerTomas Mraz <tmraz@fedoraproject.org>2020-12-19 11:33:21 +0100
commita5f2782ceca7af2480c86562e8952b2980251e4e (patch)
treef03b6f72152bcff1fd2bba062fe6b6b9b4972cca
parent5faec149c6af2e4269bc7e0b381c466619ed19a7 (diff)
Fix OSSL_PARAM creation in OSSL_STORE_open_ex
The params[0].data is set to a non-NULL value, but params[0].data_size is always zero. This confuses get_string_internal, which creates 1 byte string with uninitialized content. When OSSL_PARAM_construct_utf8_string is used, the data_size is set correctly. Reviewed-by: Richard Levitte <levitte@openssl.org> Reviewed-by: Tomas Mraz <tmraz@fedoraproject.org> (Merged from https://github.com/openssl/openssl/pull/13699)
-rw-r--r--crypto/store/store_lib.c11
1 files changed, 5 insertions, 6 deletions
diff --git a/crypto/store/store_lib.c b/crypto/store/store_lib.c
index c59c508be1..5d0b3e7397 100644
--- a/crypto/store/store_lib.c
+++ b/crypto/store/store_lib.c
@@ -103,13 +103,12 @@ OSSL_STORE_open_ex(const char *uri, OSSL_LIB_CTX *libctx, const char *propq,
OSSL_STORE_LOADER_free(fetched_loader);
fetched_loader = NULL;
} else if (propq != NULL) {
- OSSL_PARAM params[] = {
- OSSL_PARAM_utf8_string(OSSL_STORE_PARAM_PROPERTIES,
- NULL, 0),
- OSSL_PARAM_END
- };
+ OSSL_PARAM params[2];
+
+ params[0] = OSSL_PARAM_construct_utf8_string(
+ OSSL_STORE_PARAM_PROPERTIES, (char *)propq, 0);
+ params[1] = OSSL_PARAM_construct_end();
- params[0].data = (void *)propq;
if (!fetched_loader->p_set_ctx_params(loader_ctx, params)) {
(void)fetched_loader->p_close(loader_ctx);
OSSL_STORE_LOADER_free(fetched_loader);