From ea3d1047b01a6c5f9a70f35db063e5001ed5c14b Mon Sep 17 00:00:00 2001 From: Mattias Andrée Date: Thu, 21 Aug 2014 19:11:27 +0200 Subject: fix error in partial bit support for c implementations MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Mattias Andrée --- java-c-jni/SHA3.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) (limited to 'java-c-jni') diff --git a/java-c-jni/SHA3.c b/java-c-jni/SHA3.c index 1735099..9422b3c 100644 --- a/java-c-jni/SHA3.c +++ b/java-c-jni/SHA3.c @@ -645,21 +645,25 @@ byte* digest(byte* msg, long msglen, long bits, int* suffix, long suffix_len, bo msglen += bits >> 3; if ((bits &= 7)) - { msg[msglen] &= (1 << bits) - 1; + if (suffix_len) + { msg = (byte*)realloc(msg, msglen + ((suffix_len + bits + 7) >> 3)); + if (!bits) + msg[msglen] = 0; for (i = 0; i < suffix_len; i++) { - msg[msglen] |= suffix[i] << bits; + msg[msglen] |= suffix[i] << bits++; if (bits == 8) { bits = 0; msglen++; + msg[msglen] = 0; } } - if (bits) - msglen++; } + if (bits) + msglen++; if (mptr + msglen > mlen) { -- cgit v1.2.3-70-g09d2