I've now committed most of your diff, thanks once again. o I asked for further review on the kernel parts o I'm going to skip hack for now
Here's a patch for libc, based on the previous discussion. I think this is easier to read and understand. No binary change on amd64. ok? Index: lib/libc/stdlib/rand.c =================================================================== RCS file: /var/cvs/src/lib/libc/stdlib/rand.c,v retrieving revision 1.15 diff -u -p -r1.15 rand.c --- lib/libc/stdlib/rand.c 13 Sep 2015 08:31:47 -0000 1.15 +++ lib/libc/stdlib/rand.c 16 Dec 2015 08:02:41 -0000 @@ -37,7 +37,7 @@ int rand_r(u_int *seed) { *seed = *seed * 1103515245 + 12345; - return (*seed % ((u_int)RAND_MAX + 1)); + return (*seed & RAND_MAX); } DEF_WEAK(rand_r); @@ -50,7 +50,7 @@ int rand(void) { if (rand_deterministic == 0) - return (arc4random() % ((u_int)RAND_MAX + 1)); + return (arc4random() & RAND_MAX); return (rand_r(&next)); }