From 76a74dffed530986757f0d088d124605f47a1f08 Mon Sep 17 00:00:00 2001 From: Bhatu Date: Thu, 11 Mar 2021 11:31:16 +0530 Subject: [PATCH] Fix alignment in SHA256 hashing --- SCI/src/utils/hash.h | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/SCI/src/utils/hash.h b/SCI/src/utils/hash.h index 3d9739f6..ac078eaa 100644 --- a/SCI/src/utils/hash.h +++ b/SCI/src/utils/hash.h @@ -78,14 +78,15 @@ class Hash { public: } __attribute__((target("sse2"))) static block128 hash_for_block128(const void * data, int nbyte) { - char digest[DIGEST_SIZE]; + // even though stack is aligned to 16 byte, we don't know the order of locals. + char digest[DIGEST_SIZE] __attribute__ ((aligned (16))); hash_once(digest, data, nbyte); return _mm_load_si128((__m128i*)&digest[0]); } __attribute__((target("avx"))) static block256 hash_for_block256(const void * data, int nbyte) { - char digest[DIGEST_SIZE]; + char digest[DIGEST_SIZE] __attribute__ ((aligned (32))); hash_once(digest, data, nbyte); return _mm256_load_si256((__m256i*)&digest[0]); }