OpenBSD 5.5 removed arc4random_stir
authorTodd Lyons <tlyons@exim.org>
Thu, 14 Aug 2014 12:30:54 +0000 (05:30 -0700)
committerTodd Lyons <tlyons@exim.org>
Thu, 14 Aug 2014 12:30:54 +0000 (05:30 -0700)
src/OS/os.h-OpenBSD
src/src/expand.c

index 55bade674a1da417887ef92b53a22ca5cbc14f55..9578047af72d4b11d236f18d9af1407355cd180d 100644 (file)
@@ -5,6 +5,13 @@
 #define HAVE_SYS_MOUNT_H
 #define SIOCGIFCONF_GIVES_ADDR
 #define HAVE_ARC4RANDOM
+/* In May 2014, OpenBSD 5.5 was released which cleaned up the arc4random_* API
+   which removed the arc4random_stir() function. Set NOT_HAVE_ARC4RANDOM_STIR
+   if the version released is past that point. */
+#include <sys/param.h>
+#if OpenBSD >= 201405
+#define NOT_HAVE_ARC4RANDOM_STIR
+#endif
 
 typedef struct flock flock_t;
 
index 70d7c7d2ff61ef892d8b244f11c440d40a34f408..0b6513ccdab09cac3ecfa336f9ba5e9a5ce99039 100644 (file)
@@ -913,7 +913,9 @@ vaguely_random_number(int max)
 #ifdef HAVE_ARC4RANDOM
       /* cryptographically strong randomness, common on *BSD platforms, not
       so much elsewhere.  Alas. */
+#ifndef NOT_HAVE_ARC4RANDOM_STIR
       arc4random_stir();
+#endif
 #elif defined(HAVE_SRANDOM) || defined(HAVE_SRANDOMDEV)
 #ifdef HAVE_SRANDOMDEV
       /* uses random(4) for seeding */