aboutsummaryrefslogtreecommitdiff
path: root/crypto/info.c
diff options
context:
space:
mode:
authorBernd Edlinger <bernd.edlinger@hotmail.de>2022-11-13 21:34:16 +0100
committerTomas Mraz <tomas@openssl.org>2022-12-22 12:07:44 +0100
commit85f172a5156769590927559553ddc977eef5c63c (patch)
tree53deaeeec9dc28dca92008876eb72d63894cee7e /crypto/info.c
parentcdc23b16bb562f002360ff216eb57344014857da (diff)
downloadopenssl-85f172a5156769590927559553ddc977eef5c63c.zip
openssl-85f172a5156769590927559553ddc977eef5c63c.tar.gz
openssl-85f172a5156769590927559553ddc977eef5c63c.tar.bz2
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) (cherry picked from commit ee17dcc7ffbd6621f82838c75792f19aa97bd5d7)
Diffstat (limited to 'crypto/info.c')
-rw-r--r--crypto/info.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/crypto/info.c b/crypto/info.c
index 589a44a..3a70b15 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),