From a5f2782ceca7af2480c86562e8952b2980251e4e Mon Sep 17 00:00:00 2001 From: Petr Gotthard Date: Thu, 17 Dec 2020 20:13:00 +0100 Subject: [PATCH] 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 Reviewed-by: Tomas Mraz (Merged from https://github.com/openssl/openssl/pull/13699) --- crypto/store/store_lib.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/crypto/store/store_lib.c b/crypto/store/store_lib.c index c59c508be1e..5d0b3e73974 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); -- 2.47.3