From 709755cd9e4768a14e553d5df7e05875e7e19ecb Mon Sep 17 00:00:00 2001 From: chrox Date: Thu, 15 May 2014 15:11:27 +0800 Subject: [PATCH] fix ffi.cast to uint32_t in ARM I don't know if it's a bug in luajit but on an x86_64 CPU: ```lua > = ffi.cast("uint32_t", 0xFFFFFFFFE) + 0 4294967294LL ``` while on an ARM CPU: ```lua > = ffi.cast("uint32_t", 0xFFFFFFFFE) + 0 4294967295LL ``` --- frontend/MD5.lua | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/frontend/MD5.lua b/frontend/MD5.lua index bf72a0d47..625624259 100644 --- a/frontend/MD5.lua +++ b/frontend/MD5.lua @@ -132,10 +132,10 @@ function MD5Transform(buf, input) c = MD5STEP(F4, c, d, a, b, input[2] + 0x2ad7d2bb, 15); b = MD5STEP(F4, b, c, d, a, input[9] + 0xeb86d391, 21); - buf[0] = (buf[0] + a)%0xffffffff; - buf[1] = (buf[1] + b)%0xffffffff; - buf[2] = (buf[2] + c)%0xffffffff; - buf[3] = (buf[3] + d)%0xffffffff; + buf[0] = band(buf[0] + a, 0xFFFFFFFF); + buf[1] = band(buf[1] + b, 0xFFFFFFFF); + buf[2] = band(buf[2] + c, 0xFFFFFFFF); + buf[3] = band(buf[3] + d, 0xFFFFFFFF); end function MD5Update(ctx, buf, len)