aboutsummaryrefslogtreecommitdiff
path: root/tests/unit_tests/keccak.cpp
diff options
context:
space:
mode:
authormoneromooo-monero <moneromooo-monero@users.noreply.github.com>2019-07-02 21:07:49 +0000
committermoneromooo-monero <moneromooo-monero@users.noreply.github.com>2019-07-04 22:13:16 +0000
commitc2238327d0c20f2a1e601ec120db51a13cebfc35 (patch)
tree2fd87e79f624ed7f32df0a8966ce7a87124ae1cd /tests/unit_tests/keccak.cpp
parentMerge pull request #5641 (diff)
downloadmonero-c2238327d0c20f2a1e601ec120db51a13cebfc35.tar.xz
keccak: guard against misaligned memory accesses on ARM
The code generated is exactly the same as the direct access one on x86_64
Diffstat (limited to 'tests/unit_tests/keccak.cpp')
-rw-r--r--tests/unit_tests/keccak.cpp17
1 files changed, 17 insertions, 0 deletions
diff --git a/tests/unit_tests/keccak.cpp b/tests/unit_tests/keccak.cpp
index 37da65d76..f4d41a8fa 100644
--- a/tests/unit_tests/keccak.cpp
+++ b/tests/unit_tests/keccak.cpp
@@ -148,3 +148,20 @@ TEST(keccak, 137_and_1_136)
TEST_KECCAK(137, chunks);
}
+TEST(keccak, alignment)
+{
+ uint8_t data[6064];
+ __attribute__ ((aligned(16))) char adata[6000];
+
+ for (size_t i = 0; i < sizeof(data) / sizeof(data[0]); ++i)
+ data[i] = i & 1;
+
+ uint8_t md[32], amd[32];
+ for (int offset = 0; offset < 64; ++offset)
+ {
+ memcpy(adata, data + offset, 6000);
+ keccak((const uint8_t*)&data[offset], 6000, md, 32);
+ keccak((const uint8_t*)adata, 6000, amd, 32);
+ ASSERT_TRUE(!memcmp(md, amd, 32));
+ }
+}