Only use evutil_secure_rng_add_bytes() when present.

OpenBSD removes this function, and now that Tor requires Libevent 2,
we should also support the OpenBSD Libevent 2.

Fixes bug 19904; bugfix on 0.2.5.4-alpha.
This commit is contained in:
Nick Mathewson 2016-08-11 20:37:18 -04:00
parent 60997a00e8
commit e788c577f1
3 changed files with 9 additions and 1 deletions

4
changes/bug19904 Normal file
View File

@ -0,0 +1,4 @@
o Minor bugfixes (compilation):
- Build correctly on versions of libevent2 without support
for evutil_secure_rng_add_bytes(). Fixes bug 19904;
bugfix on 0.2.5.4-alpha.

View File

@ -500,7 +500,9 @@ save_CPPFLAGS="$CPPFLAGS"
LIBS="-levent $STATIC_LIBEVENT_FLAGS $TOR_LIB_WS32 $LIBS"
LDFLAGS="$TOR_LDFLAGS_libevent $LDFLAGS"
CPPFLAGS="$TOR_CPPFLAGS_libevent $CPPFLAGS"
AC_CHECK_FUNCS([evutil_secure_rng_set_urandom_device_file])
AC_CHECK_FUNCS([evutil_secure_rng_set_urandom_device_file \
evutil_secure_rng_add_bytes \
])
LIBS="$STATIC_LIBEVENT_FLAGS $TOR_LIB_WS32 $save_LIBS"

View File

@ -337,7 +337,9 @@ tor_init_libevent_rng(void)
rv = -1;
}
crypto_rand(buf, 32);
#ifdef HAVE_EVUTIL_SECURE_RNG_ADD_BYTES
evutil_secure_rng_add_bytes(buf, 32);
#endif
evutil_secure_rng_get_bytes(buf, sizeof(buf));
return rv;
}