summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorOBATA Akio <[email protected]>2019-08-18 18:28:04 +0900
committerSlávek Banko <[email protected]>2019-08-18 15:39:32 +0200
commiteb6fecd543a67412b06971162b37611631f1e0fc (patch)
tree4e77e9b07190aa9652d7a4f93df0049f49c01885
parentfafd412d640a738313f6a435fbc344ce482e8108 (diff)
downloadtdebase-eb6fecd543a67412b06971162b37611631f1e0fc.tar.gz
tdebase-eb6fecd543a67412b06971162b37611631f1e0fc.zip
Change to use arc4random_buf(3) if available
Signed-off-by: OBATA Akio <[email protected]> (cherry picked from commit 027c45db6f63a04eb31eac481f9264ab9760dce1)
-rw-r--r--config.h.cmake1
-rw-r--r--tdm/ConfigureChecks.cmake1
-rw-r--r--tdm/backend/genauth.c5
3 files changed, 6 insertions, 1 deletions
diff --git a/config.h.cmake b/config.h.cmake
index 17378621c..08e503c35 100644
--- a/config.h.cmake
+++ b/config.h.cmake
@@ -185,6 +185,7 @@
#cmakedefine HAVE_ARC4RANDOM 1
#cmakedefine DEV_RANDOM "@DEV_RANDOM@"
+#cmakedefine HAVE_ARC4RANDOM_BUF 1
#cmakedefine USE_PAM 1
#cmakedefine TDM_PAM_SERVICE "@TDM_PAM_SERVICE@"
diff --git a/tdm/ConfigureChecks.cmake b/tdm/ConfigureChecks.cmake
index cb333aa61..cb5615243 100644
--- a/tdm/ConfigureChecks.cmake
+++ b/tdm/ConfigureChecks.cmake
@@ -98,6 +98,7 @@ if( NOT HAVE_ARC4RANDOM )
set( DEV_RANDOM "/dev/random" CACHE INTERNAL "" FORCE )
endif( )
endif (NOT HAVE_ARC4RANDOM)
+check_function_exists( arc4random_buf HAVE_ARC4RANDOM_BUF )
# Xau
pkg_search_module( XAU xau )
diff --git a/tdm/backend/genauth.c b/tdm/backend/genauth.c
index 6da95cce0..1bde2fc85 100644
--- a/tdm/backend/genauth.c
+++ b/tdm/backend/genauth.c
@@ -432,7 +432,10 @@ AddPreGetEntropy( void )
int
GenerateAuthData( char *auth, int len )
{
-#ifdef HAVE_ARC4RANDOM
+#ifdef HAVE_ARC4RANDOM_BUF
+ arc4random_buf((void*)auth, (size_t)len);
+ return 1;
+#elif defined(HAVE_ARC4RANDOM)
int i;
unsigned *rnd = (unsigned *)auth;
if (sizeof(unsigned) == 4)