Module Name:    src
Committed By:   kamil
Date:           Fri Feb 14 01:52:35 UTC 2020

Modified Files:
        src/external/bsd/jemalloc/include/jemalloc/internal: hash.h

Log Message:
Fix undefined behavior in hash.h (jemalloc)

Cherry-pick upstream patch:

    Fix Undefined Behavior in hash.h

    hash.h:200:27, left shift of 250 by 24 places cannot be represented in type 
'int'

https://github.com/jemalloc/jemalloc/commit/7fd22f7b2ea5ce2540563ece8e2d30a5316ac857


To generate a diff of this commit:
cvs rdiff -u -r1.2 -r1.3 \
    src/external/bsd/jemalloc/include/jemalloc/internal/hash.h

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/external/bsd/jemalloc/include/jemalloc/internal/hash.h
diff -u src/external/bsd/jemalloc/include/jemalloc/internal/hash.h:1.2 src/external/bsd/jemalloc/include/jemalloc/internal/hash.h:1.3
--- src/external/bsd/jemalloc/include/jemalloc/internal/hash.h:1.2	Mon Mar  4 20:21:18 2019
+++ src/external/bsd/jemalloc/include/jemalloc/internal/hash.h	Fri Feb 14 01:52:35 2020
@@ -183,21 +183,21 @@ hash_x86_128(const void *key, const int 
 			k4 *= c4; k4 = hash_rotl_32(k4, 18); k4 *= c1; h4 ^= k4;
 			/*FALLTHROUGH*/
 
-		case 12: k3 ^= tail[11] << 24;	/*FALLTHROUGH*/
+		case 12: k3 ^= (uint32_t)tail[11] << 24;	/*FALLTHROUGH*/
 		case 11: k3 ^= tail[10] << 16;	/*FALLTHROUGH*/
 		case 10: k3 ^= tail[ 9] << 8;	/*FALLTHROUGH*/
 		case  9: k3 ^= tail[ 8] << 0;
 			k3 *= c3; k3 = hash_rotl_32(k3, 17); k3 *= c4; h3 ^= k3;
 			/*FALLTHROUGH*/
 
-		case  8: k2 ^= tail[ 7] << 24;	/*FALLTHROUGH*/
+		case  8: k2 ^= (uint32_t)tail[ 7] << 24;	/*FALLTHROUGH*/
 		case  7: k2 ^= tail[ 6] << 16;	/*FALLTHROUGH*/
 		case  6: k2 ^= tail[ 5] << 8;	/*FALLTHROUGH*/
 		case  5: k2 ^= tail[ 4] << 0;
 			k2 *= c2; k2 = hash_rotl_32(k2, 16); k2 *= c3; h2 ^= k2;
 			/*FALLTHROUGH*/
 
-		case  4: k1 ^= tail[ 3] << 24;	/*FALLTHROUGH*/
+		case  4: k1 ^= (uint32_t)tail[ 3] << 24;	/*FALLTHROUGH*/
 		case  3: k1 ^= tail[ 2] << 16;	/*FALLTHROUGH*/
 		case  2: k1 ^= tail[ 1] << 8;	/*FALLTHROUGH*/
 		case  1: k1 ^= tail[ 0] << 0;

Reply via email to