From b396585383fe12c890ef7953efaa13a83963b5d7 Mon Sep 17 00:00:00 2001 From: Guus Sliepen Date: Sun, 12 Jul 2015 12:33:07 +0200 Subject: [PATCH] Fix undefined behaviour when left-shifting signed integers. Found by -fsanitize=undefined. --- src/hash.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/hash.c b/src/hash.c index 91fc3d6..50934d9 100644 --- a/src/hash.c +++ b/src/hash.c @@ -29,7 +29,7 @@ static uint32_t hash_function(const void *p, size_t len) { uint32_t hash = 0; while(true) { for(int i = len > 4 ? 4 : len; --i;) - hash += q[len - i] << (8 * i); + hash += (uint32_t)q[len - i] << (8 * i); hash *= 0x9e370001UL; // Golden ratio prime. if(len <= 4) break; -- 2.25.1