aboutsummaryrefslogtreecommitdiff
path: root/evutil_rand.c
diff options
context:
space:
mode:
authorNarayan Kamath <narayan@google.com>2017-09-13 12:53:52 +0100
committerNarayan Kamath <narayan@google.com>2017-09-13 14:18:03 +0100
commitfc74cb45eafe51162b10a850016c6d2e1f8fd23c (patch)
tree203fb0f2feed47099e5bf999bcaff954f5c0e49d /evutil_rand.c
parent9dfd4017adef7eaf179f743bf746254917a4fb74 (diff)
downloadlibevent-fc74cb45eafe51162b10a850016c6d2e1f8fd23c.tar.gz
Revert "Revert "Upgrade to 2.1.8-stable (2017-01-22)." and "Probably Mac build fix?""
This reverts commit 83a0c9c65a60a92d3ea5542596b3ba56db492c37. Bug: 64543673 Test: make checkbuild Test: Manual tombstoned test Change-Id: I84bb128d1dec433195f2cbdbf70236ba17fa9955
Diffstat (limited to 'evutil_rand.c')
-rw-r--r--evutil_rand.c60
1 files changed, 43 insertions, 17 deletions
diff --git a/evutil_rand.c b/evutil_rand.c
index 2003d1b..76d0f4a 100644
--- a/evutil_rand.c
+++ b/evutil_rand.c
@@ -33,13 +33,14 @@
*/
#include "event2/event-config.h"
+#include "evconfig-private.h"
#include <limits.h>
#include "util-internal.h"
#include "evthread-internal.h"
-#ifdef _EVENT_HAVE_ARC4RANDOM
+#ifdef EVENT__HAVE_ARC4RANDOM
#include <stdlib.h>
#include <string.h>
int
@@ -55,21 +56,28 @@ evutil_secure_rng_init(void)
(void) arc4random();
return 0;
}
+#ifndef EVENT__DISABLE_THREAD_SUPPORT
int
evutil_secure_rng_global_setup_locks_(const int enable_locks)
{
return 0;
}
+#endif
+static void
+evutil_free_secure_rng_globals_locks(void)
+{
+}
static void
ev_arc4random_buf(void *buf, size_t n)
{
-#if defined(_EVENT_HAVE_ARC4RANDOM_BUF) && !defined(__APPLE__)
- return arc4random_buf(buf, n);
+#if defined(EVENT__HAVE_ARC4RANDOM_BUF) && !defined(__APPLE__)
+ arc4random_buf(buf, n);
+ return;
#else
unsigned char *b = buf;
-#if defined(_EVENT_HAVE_ARC4RANDOM_BUF)
+#if defined(EVENT__HAVE_ARC4RANDOM_BUF)
/* OSX 10.7 introducd arc4random_buf, so if you build your program
* there, you'll get surprised when older versions of OSX fail to run.
* To solve this, we can check whether the function pointer is set,
@@ -80,7 +88,8 @@ ev_arc4random_buf(void *buf, size_t n)
void (*tptr)(void *,size_t) =
(void (*)(void*,size_t))arc4random_buf;
if (tptr != NULL) {
- return arc4random_buf(buf, n);
+ arc4random_buf(buf, n);
+ return;
}
}
#endif
@@ -105,15 +114,15 @@ ev_arc4random_buf(void *buf, size_t n)
#endif
}
-#else /* !_EVENT_HAVE_ARC4RANDOM { */
+#else /* !EVENT__HAVE_ARC4RANDOM { */
-#ifdef _EVENT_ssize_t
-#define ssize_t _EVENT_SSIZE_t
+#ifdef EVENT__ssize_t
+#define ssize_t EVENT__ssize_t
#endif
#define ARC4RANDOM_EXPORT static
-#define _ARC4_LOCK() EVLOCK_LOCK(arc4rand_lock, 0)
-#define _ARC4_UNLOCK() EVLOCK_UNLOCK(arc4rand_lock, 0)
-#ifndef _EVENT_DISABLE_THREAD_SUPPORT
+#define ARC4_LOCK_() EVLOCK_LOCK(arc4rand_lock, 0)
+#define ARC4_UNLOCK_() EVLOCK_UNLOCK(arc4rand_lock, 0)
+#ifndef EVENT__DISABLE_THREAD_SUPPORT
static void *arc4rand_lock;
#endif
@@ -124,7 +133,7 @@ static void *arc4rand_lock;
#include "./arc4random.c"
-#ifndef _EVENT_DISABLE_THREAD_SUPPORT
+#ifndef EVENT__DISABLE_THREAD_SUPPORT
int
evutil_secure_rng_global_setup_locks_(const int enable_locks)
{
@@ -133,13 +142,25 @@ evutil_secure_rng_global_setup_locks_(const int enable_locks)
}
#endif
+static void
+evutil_free_secure_rng_globals_locks(void)
+{
+#ifndef EVENT__DISABLE_THREAD_SUPPORT
+ if (arc4rand_lock != NULL) {
+ EVTHREAD_FREE_LOCK(arc4rand_lock, 0);
+ arc4rand_lock = NULL;
+ }
+#endif
+ return;
+}
+
int
evutil_secure_rng_set_urandom_device_file(char *fname)
{
#ifdef TRY_SEED_URANDOM
- _ARC4_LOCK();
+ ARC4_LOCK_();
arc4random_urandom_filename = fname;
- _ARC4_UNLOCK();
+ ARC4_UNLOCK_();
#endif
return 0;
}
@@ -149,11 +170,11 @@ evutil_secure_rng_init(void)
{
int val;
- _ARC4_LOCK();
+ ARC4_LOCK_();
if (!arc4_seeded_ok)
arc4_stir();
val = arc4_seeded_ok ? 0 : -1;
- _ARC4_UNLOCK();
+ ARC4_UNLOCK_();
return val;
}
@@ -163,7 +184,7 @@ ev_arc4random_buf(void *buf, size_t n)
arc4random_buf(buf, n);
}
-#endif /* } !_EVENT_HAVE_ARC4RANDOM */
+#endif /* } !EVENT__HAVE_ARC4RANDOM */
void
evutil_secure_rng_get_bytes(void *buf, size_t n)
@@ -180,3 +201,8 @@ evutil_secure_rng_add_bytes(const char *buf, size_t n)
#endif
}
+void
+evutil_free_secure_rng_globals_(void)
+{
+ evutil_free_secure_rng_globals_locks();
+}