Commit 39f8c796 authored by Ganesh Ajjanagadde's avatar Ganesh Ajjanagadde

lavu/random_seed: use arc4random() when available

arc4random() was designed as a superior interface for system random
number generation, designed for OpenBSD and subsequently incorporated by
other BSD's, Mac OS X, and some non-standard libc's. It is thus an improvement to
use it whenever available.

As a side note, this may or may not get included in glibc, and there is
a proposal to create a posix_random family based on these ideas:
http://austingroupbugs.net/view.php?id=859.

Tested on Mac OS X.
Signed-off-by: 's avatarGanesh Ajjanagadde <gajjanagadde@gmail.com>
parent 7b880464
......@@ -1841,6 +1841,7 @@ MATH_FUNCS="
SYSTEM_FUNCS="
access
aligned_malloc
arc4random
clock_gettime
closesocket
CommandLineToArgvW
......@@ -5232,6 +5233,7 @@ check_func ${malloc_prefix}memalign && enable memalign
check_func ${malloc_prefix}posix_memalign && enable posix_memalign
check_func access
check_func arc4random
check_func_headers time.h clock_gettime || { check_func_headers time.h clock_gettime -lrt && add_extralibs -lrt && LIBRT="-lrt"; }
check_func fcntl
check_func fork
......
......@@ -121,6 +121,10 @@ uint32_t av_get_random_seed(void)
}
#endif
#if HAVE_ARC4RANDOM
return arc4random();
#endif
if (read_random(&seed, "/dev/urandom") == sizeof(seed))
return seed;
if (read_random(&seed, "/dev/random") == sizeof(seed))
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment