From: Petr Gotthard Date: Thu, 17 Dec 2020 19:13:00 +0000 (+0100) Subject: Fix OSSL_PARAM creation in OSSL_STORE_open_ex X-Git-Tag: openssl-3.0.0-alpha10~27 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a5f2782ceca7af2480c86562e8952b2980251e4e;p=thirdparty%2Fopenssl.git 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) --- 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);