VeraCrypt
aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMounir IDRASSI <mounir.idrassi@idrix.fr>2019-10-17 14:59:24 +0200
committerMounir IDRASSI <mounir.idrassi@idrix.fr>2019-10-17 15:00:37 +0200
commit4119521f9e7e11f6bae29963605b9acb2960fa8c (patch)
tree2b44e9b8778442b52e80a9a1cd676c2e69e81a62
parent3bb661244c7899c068030558c50b266e0078e28f (diff)
downloadVeraCrypt-4119521f9e7e11f6bae29963605b9acb2960fa8c.tar.gz
VeraCrypt-4119521f9e7e11f6bae29963605b9acb2960fa8c.zip
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.
-rw-r--r--src/Crypto/Whirlpool.c14
1 files changed, 14 insertions, 0 deletions
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
@@ -643,6 +643,20 @@ static const uint64 Whirlpool_C[8*256+R] = {
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())
{
#ifdef __GNUC__