You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@apr.apache.org by yl...@apache.org on 2017/11/03 23:28:21 UTC
svn commit: r1814239 - in /apr/apr/trunk: configure.in misc/unix/rand.c
Author: ylavic
Date: Fri Nov 3 23:28:21 2017
New Revision: 1814239
URL: http://svn.apache.org/viewvc?rev=1814239&view=rev
Log:
rand: add support for the arc4random API as an entropy source.
The arc4random API originates from OpenBSD where it supersedes random(3),
rand(3), and files in the /dev filesystem.
Use it for apr_generate_random_bytes().
Proposed by: Christian Weisgerber
Reviewed by: ylavic
Modified:
apr/apr/trunk/configure.in
apr/apr/trunk/misc/unix/rand.c
Modified: apr/apr/trunk/configure.in
URL: http://svn.apache.org/viewvc/apr/apr/trunk/configure.in?rev=1814239&r1=1814238&r2=1814239&view=diff
==============================================================================
--- apr/apr/trunk/configure.in (original)
+++ apr/apr/trunk/configure.in Fri Nov 3 23:28:21 2017
@@ -2453,6 +2453,8 @@ else
fi
dnl ----------------------------- Checking for /dev/random
+AC_CHECK_FUNCS(arc4random_buf)
+
AC_MSG_CHECKING(for entropy source)
why_no_rand=""
@@ -2471,6 +2473,13 @@ AC_ARG_WITH(egd,
])
if test "$rand" != "1"; then
+ if test "$ac_cv_func_arc4random_buf" = yes; then
+ AC_MSG_RESULT(arc4random)
+ rand="1"
+ fi
+fi
+
+if test "$rand" != "1"; then
AC_ARG_WITH(devrandom,
[ --with-devrandom[[=DEV]] use /dev/random or compatible [[searches by default]]],
[ apr_devrandom="$withval" ], [ apr_devrandom="yes" ])
Modified: apr/apr/trunk/misc/unix/rand.c
URL: http://svn.apache.org/viewvc/apr/apr/trunk/misc/unix/rand.c?rev=1814239&r1=1814238&r2=1814239&view=diff
==============================================================================
--- apr/apr/trunk/misc/unix/rand.c (original)
+++ apr/apr/trunk/misc/unix/rand.c Fri Nov 3 23:28:21 2017
@@ -87,7 +87,11 @@ APR_DECLARE(apr_status_t) apr_os_uuid_ge
APR_DECLARE(apr_status_t) apr_generate_random_bytes(unsigned char *buf,
apr_size_t length)
{
-#ifdef DEV_RANDOM
+#if defined(HAVE_ARC4RANDOM)
+
+ arc4random_buf(buf, length);
+
+#elif defined(DEV_RANDOM)
int fd = -1;