From 4119521f9e7e11f6bae29963605b9acb2960fa8c Mon Sep 17 00:00:00 2001 From: Mounir IDRASSI Date: Thu, 17 Oct 2019 14:59:24 +0200 Subject: Linux: Workaround for gcc 4.4.7 bug under CentOS 6 that causes VeraCrypt built under CentOS 6 to crash when Whirlpool hash is used. --- src/Crypto/Whirlpool.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'src/Crypto') diff --git a/src/Crypto/Whirlpool.c b/src/Crypto/Whirlpool.c index 35188c63..9452951e 100644 --- a/src/Crypto/Whirlpool.c +++ b/src/Crypto/Whirlpool.c @@ -642,6 +642,20 @@ static const uint64 Whirlpool_C[8*256+R] = { // Whirlpool basic transformation. Transforms state based on block. void WhirlpoolTransform(uint64 *digest, const uint64 *block) { +#if CRYPTOPP_BOOL_SSE2_ASM_AVAILABLE +#if defined(__GNUC__) && (CRYPTOPP_GCC_VERSION <= 40407) + /* workaround for gcc 4.4.7 bug under CentOS which causes crash + * in inline assembly. + * This dummy check that is always false since "block" is aligned. + */ + uint64 lb = (uint64) block; + if (lb % 16) + { + TC_THROW_FATAL_EXCEPTION; + } +#endif +#endif + #if CRYPTOPP_BOOL_SSE2_ASM_AVAILABLE if (HasISSE()) { -- cgit v1.2.3