From: Richard Levitte Date: Wed, 21 Aug 2019 09:08:20 +0000 (+0200) Subject: Fix ossl_param_bld_push_{utf8,octet}_string() / param_bld_convert() X-Git-Tag: openssl-3.0.0-alpha1~1559 X-Git-Url: http://git.ipfire.org/?p=thirdparty%2Fopenssl.git;a=commitdiff_plain;h=d32d304836caaca475c21a82b94e494898cb60c5 Fix ossl_param_bld_push_{utf8,octet}_string() / param_bld_convert() ossl_param_bld_push_{utf8,octet}_string() saved the constant string pointer to a non-constant structure field, so we change that field to a pointer to a constant. We also modify param_bld_convert() to pretend the resulting pointer for PTR types points to a constant as well. Completes #9649 Reviewed-by: Paul Dale (Merged from https://github.com/openssl/openssl/pull/9651) --- diff --git a/crypto/param_build.c b/crypto/param_build.c index db2182196c..01866b01d9 100644 --- a/crypto/param_build.c +++ b/crypto/param_build.c @@ -260,7 +260,7 @@ static OSSL_PARAM *param_bld_convert(OSSL_PARAM_BLD *bld, OSSL_PARAM *param, } else if (pd->type == OSSL_PARAM_OCTET_PTR || pd->type == OSSL_PARAM_UTF8_PTR) { /* PTR */ - *(void **)p = pd->string; + *(const void **)p = pd->string; } else if (pd->type == OSSL_PARAM_OCTET_STRING || pd->type == OSSL_PARAM_UTF8_STRING) { if (pd->string != NULL) diff --git a/include/internal/param_build.h b/include/internal/param_build.h index 83f8087020..bb96ba98e0 100644 --- a/include/internal/param_build.h +++ b/include/internal/param_build.h @@ -20,7 +20,7 @@ typedef struct { size_t size; size_t alloc_blocks; const BIGNUM *bn; - void *string; + const void *string; union { /* * These fields are never directly addressed, but their sizes are