diff --git a/ChangeLog b/ChangeLog
index d2c8e6d1dec10db15b0c4f97f739ac8c76f46732..ca63f91b134f4b8245b37b691bcca8c9f31bfdec 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,7 @@
 2012-11-15  Niels Möller  <nisse@lysator.liu.se>
 
+	* sha3.c (sha3_absorb): Fixed big-endian code. Need macros.h.
+
 	* macros.h (LE_READ_UINT64): New macro.
 
 2012-11-13  Niels Möller  <nisse@lysator.liu.se>
diff --git a/sha3.c b/sha3.c
index a878e3bc67f21351863b73f52df3a62932df5f08..d7aec46eced5a91a51ed7dad513fe2e3c1d8ff89 100644
--- a/sha3.c
+++ b/sha3.c
@@ -32,6 +32,7 @@
 
 #include "sha3.h"
 
+#include "macros.h"
 #include "memxor.h"
 
 static void
@@ -41,7 +42,7 @@ sha3_absorb (struct sha3_state *state, unsigned length, const uint8_t *data)
 #if WORDS_BIGENDIAN
   {    
     uint64_t *p;
-    for (p = &state->a[0][0]; length > 0; p++, length -= 8, data += 8)
+    for (p = state->a; length > 0; p++, length -= 8, data += 8)
       *p ^= LE_READ_UINT64 (data);
   }
 #else /* !WORDS_BIGENDIAN */