]> git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - mdfour.c
Fix signed int overflows and tidy nearby documentation
[xonotic/darkplaces.git] / mdfour.c
index ae92e3758af2ac487f1b732662fe731a6d1cda79..5164994a01e246974c6ae8995a072c1f4b39f1b6 100644 (file)
--- a/mdfour.c
+++ b/mdfour.c
@@ -98,8 +98,9 @@ static void copy64(uint32_t *M, const unsigned char *in)
 {
        int i;
 
+       // UBSan: (unsigned) is because promotion to int causes signed overflow when in[] >= 128
        for (i=0;i<16;i++)
-               M[i] = (in[i*4+3]<<24) | (in[i*4+2]<<16) |
+               M[i] = ((unsigned)in[i*4+3]<<24) | (in[i*4+2]<<16) |
                        (in[i*4+1]<<8) | (in[i*4+0]<<0);
 }