⬢ DragonFlyBSD Kernel Audit
DF-5694 / fix.diff
← back to finding ↓ download raw
--- a/sys/libkern/arc4random.c
+++ b/sys/libkern/arc4random.c
@@ -126,10 +126,10 @@
 	    time_uptime > d->arc4_nextreseed)
 		arc4_randomstir(d);
 
-	ret = arc4_randbyte(d);
-	ret |= arc4_randbyte(d) << 8;
-	ret |= arc4_randbyte(d) << 16;
-	ret |= arc4_randbyte(d) << 24;
+	ret = (uint64_t)arc4_randbyte(d);
+	ret |= (uint64_t)arc4_randbyte(d) << 8;
+	ret |= (uint64_t)arc4_randbyte(d) << 16;
+	ret |= (uint64_t)arc4_randbyte(d) << 24;
 	ret |= (uint64_t)arc4_randbyte(d) << 32;
 	ret |= (uint64_t)arc4_randbyte(d) << 40;
 	ret |= (uint64_t)arc4_randbyte(d) << 48;