[FFmpeg-cvslog] lavu/random_seed: use arc4random() when available

Ganesh Ajjanagadde git at videolan.org
Thu Dec 17 17:14:13 CET 2015


ffmpeg | branch: master | Ganesh Ajjanagadde <gajjanagadde at gmail.com> | Sun Dec  6 21:10:21 2015 -0500| [39f8c7961dcd530e88d13c600145097106647d2e] | committer: 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: Ganesh Ajjanagadde <gajjanagadde at gmail.com>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=39f8c7961dcd530e88d13c600145097106647d2e
---

 configure               |    2 ++
 libavutil/random_seed.c |    4 ++++
 2 files changed, 6 insertions(+)

diff --git a/configure b/configure
index 7662f37..dc1d2eb 100755
--- a/configure
+++ b/configure
@@ -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
diff --git a/libavutil/random_seed.c b/libavutil/random_seed.c
index 8aa8c38..205a636 100644
--- a/libavutil/random_seed.c
+++ b/libavutil/random_seed.c
@@ -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))



More information about the ffmpeg-cvslog mailing list