Browse Source

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.
Nick Mathewson 7 years ago
parent
commit
e788c577f1
3 changed files with 9 additions and 1 deletions
  1. 4 0
      changes/bug19904
  2. 3 1
      configure.ac
  3. 2 0
      src/common/compat_libevent.c

+ 4 - 0
changes/bug19904

@@ -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.

+ 3 - 1
configure.ac

@@ -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"
 

+ 2 - 0
src/common/compat_libevent.c

@@ -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;
 }