]> granicus.if.org Git - php/commitdiff
Fix shift UB in hash_snefru
authorNikita Popov <nikita.ppv@gmail.com>
Wed, 19 Jun 2019 13:55:56 +0000 (15:55 +0200)
committerNikita Popov <nikita.ppv@gmail.com>
Wed, 19 Jun 2019 13:55:56 +0000 (15:55 +0200)
ext/hash/hash_snefru.c

index 4bca34d6c39f438f8f7847e083586c1171f08f44..867556acc5807f161883a246efcf93843ee60b41 100644 (file)
@@ -123,8 +123,8 @@ static inline void SnefruTransform(PHP_SNEFRU_CTX *context, const unsigned char
        int i, j;
 
        for (i = 0, j = 0; i < 32; i += 4, ++j) {
-               context->state[8+j] =   ((input[i] & 0xff) << 24) | ((input[i+1] & 0xff) << 16) |
-                                                               ((input[i+2] & 0xff) << 8) | (input[i+3] & 0xff);
+               context->state[8+j] =   ((unsigned)input[i] << 24) | ((unsigned)input[i+1] << 16) |
+                                                               ((unsigned)input[i+2] << 8) | (unsigned)input[i+3];
        }
        Snefru(context->state);
        ZEND_SECURE_ZERO(&context->state[8], sizeof(uint32_t) * 8);