summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarek Sebera <marek.sebera@gmail.com>2017-03-06 00:55:16 +0300
committerAzat Khuzhin <a3at.mail@gmail.com>2017-03-08 13:31:55 +0300
commit6541168d7037457b8e5c51cc354f11bd94e618b6 (patch)
tree187ed58f80aa93da750abe8e4cb70c7a1ebf90c1
parentf479a00894131c91aa68bc67c625e52fb94e42e9 (diff)
downloadlibevent-6541168d7037457b8e5c51cc354f11bd94e618b6.tar.gz
Detect arch4random_addrandom() existence
Refs: #370 Refs: #475
-rw-r--r--CMakeLists.txt1
-rw-r--r--configure.ac1
-rw-r--r--evutil_rand.c2
-rw-r--r--include/event2/util.h2
4 files changed, 6 insertions, 0 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index a861e7d9..f609d02d 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -338,6 +338,7 @@ CHECK_FUNCTION_EXISTS_EX(sysctl EVENT__HAVE_SYSCTL)
CHECK_FUNCTION_EXISTS_EX(accept4 EVENT__HAVE_ACCEPT4)
CHECK_FUNCTION_EXISTS_EX(arc4random EVENT__HAVE_ARC4RANDOM)
CHECK_FUNCTION_EXISTS_EX(arc4random_buf EVENT__HAVE_ARC4RANDOM_BUF)
+CHECK_FUNCTION_EXISTS_EX(arc4random_addrandom EVENT__HAVE_ARC4RANDOM_ADDRANDOM)
CHECK_FUNCTION_EXISTS_EX(epoll_create1 EVENT__HAVE_EPOLL_CREATE1)
CHECK_FUNCTION_EXISTS_EX(getegid EVENT__HAVE_GETEGID)
CHECK_FUNCTION_EXISTS_EX(geteuid EVENT__HAVE_GETEUID)
diff --git a/configure.ac b/configure.ac
index a127bbc9..e73c29b1 100644
--- a/configure.ac
+++ b/configure.ac
@@ -342,6 +342,7 @@ AC_CHECK_FUNCS([ \
accept4 \
arc4random \
arc4random_buf \
+ arc4random_addrandom \
eventfd \
epoll_create1 \
fcntl \
diff --git a/evutil_rand.c b/evutil_rand.c
index 046a14b0..4be0b1c5 100644
--- a/evutil_rand.c
+++ b/evutil_rand.c
@@ -192,12 +192,14 @@ evutil_secure_rng_get_bytes(void *buf, size_t n)
ev_arc4random_buf(buf, n);
}
+#if !defined(EVENT__HAVE_ARC4RANDOM) || defined(EVENT__HAVE_ARC4RANDOM_ADDRANDOM)
void
evutil_secure_rng_add_bytes(const char *buf, size_t n)
{
arc4random_addrandom((unsigned char*)buf,
n>(size_t)INT_MAX ? INT_MAX : (int)n);
}
+#endif
void
evutil_free_secure_rng_globals_(void)
diff --git a/include/event2/util.h b/include/event2/util.h
index dd4bbb69..c4af2bd6 100644
--- a/include/event2/util.h
+++ b/include/event2/util.h
@@ -842,6 +842,7 @@ int evutil_secure_rng_init(void);
EVENT2_EXPORT_SYMBOL
int evutil_secure_rng_set_urandom_device_file(char *fname);
+#ifdef EVENT__HAVE_ARC4RANDOM_ADDRANDOM
/** Seed the random number generator with extra random bytes.
You should almost never need to call this function; it should be
@@ -858,6 +859,7 @@ int evutil_secure_rng_set_urandom_device_file(char *fname);
*/
EVENT2_EXPORT_SYMBOL
void evutil_secure_rng_add_bytes(const char *dat, size_t datlen);
+#endif
#ifdef __cplusplus
}