Index: lib/libc/gen/arc4random.c =================================================================== --- lib/libc/gen/arc4random.c (revision 243718) +++ lib/libc/gen/arc4random.c (working copy) @@ -249,12 +249,14 @@ arc4random_buf(void *_buf, size_t n) { u_char *buf = (u_char *)_buf; _ARC4_LOCK(); + arc4_count -= n % 1600000; arc4_stir_if_needed(); - while (n--) { - if (--arc4_count <= 0) - arc4_stir(); - buf[n] = arc4_getbyte(); - } + if (arc4_sysctl(_buf, n) != n) + while (n--) { + if (--arc4_count <= 0) + arc4_stir(); + buf[n] = arc4_getbyte(); + } _ARC4_UNLOCK(); }