On Tue, Dec 09, 2014 at 00:00, Jonas 'Sortie' Termansen wrote: > On 12/08/2014 09:55 PM, Theo de Raadt wrote: >> Index: lib/libc/stdlib/mrand48.c >> =================================================================== >> RCS file: /cvs/src/lib/libc/stdlib/mrand48.c,v >> retrieving revision 1.3 >> diff -u -p -u -r1.3 mrand48.c >> --- lib/libc/stdlib/mrand48.c 8 Aug 2005 08:05:37 -0000 1.3 >> +++ lib/libc/stdlib/mrand48.c 8 Dec 2014 03:13:07 -0000 >> @@ -19,6 +19,8 @@ extern unsigned short __rand48_seed[3]; >> long >> mrand48(void) >> { >> + if (__rand48_deterministic == 0) >> + return arc4random(); >> __dorand48(__rand48_seed); >> return ((long) __rand48_seed[2] << 16) + (long) __rand48_seed[1]; >> } > > POSIX says mrand48 is meant to return signed integers in the interval > [-2^31,2^31), but this code returns an unsigned 32-bit integer value.
Fixed. Thanks. (I think.) :)