lib:crypto: Fix undefined behavior in md4
authorAndreas Schneider <asn@samba.org>
Thu, 22 Nov 2018 08:22:38 +0000 (09:22 +0100)
committerGary Lockyer <gary@samba.org>
Thu, 22 Nov 2018 21:13:27 +0000 (22:13 +0100)
runtime error: left shift of 145 by 24 places cannot be represented in type 'int'

Signed-off-by: Andreas Schneider <asn@samba.org>
Reviewed-by: Gary Lockyer <gary@catalyst.net.nz>
lib/crypto/md4.c

index 7eb6070cd44e2ac54a09b987c8b76ece842630ba..831fe32ecb80b3c5888524cb741e66a8c4b2e4ba 100644 (file)
@@ -112,8 +112,10 @@ static void copy64(uint32_t *M, const uint8_t *in)
        int i;
 
        for (i=0;i<16;i++)
-               M[i] = (in[i*4+3]<<24) | (in[i*4+2]<<16) |
-                       (in[i*4+1]<<8) | (in[i*4+0]<<0);
+               M[i] = ((uint32_t)in[i*4+3] << 24) |
+                       ((uint32_t)in[i*4+2] << 16) |
+                       ((uint32_t)in[i*4+1] << 8) |
+                       ((uint32_t)in[i*4+0] << 0);
 }
 
 static void copy4(uint8_t *out, uint32_t x)