diff options
author | Bernd Edlinger <bernd.edlinger@hotmail.de> | 2022-11-13 21:34:16 +0100 |
---|---|---|
committer | Tomas Mraz <tomas@openssl.org> | 2022-12-22 12:06:38 +0100 |
commit | ee17dcc7ffbd6621f82838c75792f19aa97bd5d7 (patch) | |
tree | 7f77e20f5cfe6011891722b8c1642ed50bc71a0f /crypto/info.c | |
parent | Add testcase for OSSL_trace_set_callback() (diff) | |
download | openssl-ee17dcc7ffbd6621f82838c75792f19aa97bd5d7.tar.xz openssl-ee17dcc7ffbd6621f82838c75792f19aa97bd5d7.zip |
Fix possible UB in init_info_strings
"openssl version -c" may create undefined behavior in the shift:
crypto/info.c:42:50: runtime error: left shift of 4275712515
by 32 places cannot be represented in type 'long long int'
Reviewed-by: Hugo Landau <hlandau@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/19668)
Diffstat (limited to 'crypto/info.c')
-rw-r--r-- | crypto/info.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/crypto/info.c b/crypto/info.c index 589a44a822..3a70b1596d 100644 --- a/crypto/info.c +++ b/crypto/info.c @@ -45,10 +45,10 @@ DEFINE_RUN_ONCE_STATIC(init_info_strings) BIO_snprintf(ossl_cpu_info_str, sizeof(ossl_cpu_info_str), CPUINFO_PREFIX "OPENSSL_ia32cap=0x%llx:0x%llx", - (long long)OPENSSL_ia32cap_P[0] | - (long long)OPENSSL_ia32cap_P[1] << 32, - (long long)OPENSSL_ia32cap_P[2] | - (long long)OPENSSL_ia32cap_P[3] << 32); + (unsigned long long)OPENSSL_ia32cap_P[0] | + (unsigned long long)OPENSSL_ia32cap_P[1] << 32, + (unsigned long long)OPENSSL_ia32cap_P[2] | + (unsigned long long)OPENSSL_ia32cap_P[3] << 32); if ((env = getenv("OPENSSL_ia32cap")) != NULL) BIO_snprintf(ossl_cpu_info_str + strlen(ossl_cpu_info_str), sizeof(ossl_cpu_info_str) - strlen(ossl_cpu_info_str), |