summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWilliam Ahern <william@25thandclement.com>2016-10-19 13:48:01 -0700
committerWilliam Ahern <william@25thandclement.com>2016-10-19 13:48:01 -0700
commitb2c70855a7b05f207f38f4bdd58fe6600bef9ec9 (patch)
tree8953324832f2a6178155887c117e3734ca1760b8
parent6e9ce5c2b3adfc52030815c43439f4890f31c32c (diff)
downloadluaossl-b2c70855a7b05f207f38f4bdd58fe6600bef9ec9.tar.gz
luaossl-b2c70855a7b05f207f38f4bdd58fe6600bef9ec9.tar.bz2
luaossl-b2c70855a7b05f207f38f4bdd58fe6600bef9ec9.zip
unbreak BSDs by using arc4random_buf
-rw-r--r--config.h.guess7
-rw-r--r--src/openssl.c4
2 files changed, 9 insertions, 2 deletions
diff --git a/config.h.guess b/config.h.guess
index c40f6bf..9b5fcdc 100644
--- a/config.h.guess
+++ b/config.h.guess
@@ -657,6 +657,13 @@
657#define HAVE_ARC4RANDOM_ADDRANDOM (HAVE_ARC4RANDOM && !AG_OPENBSD_PREREQ(5,5)) 657#define HAVE_ARC4RANDOM_ADDRANDOM (HAVE_ARC4RANDOM && !AG_OPENBSD_PREREQ(5,5))
658#endif 658#endif
659 659
660#ifndef HAVE_ARC4RANDOM_BUF
661#define HAVE_ARC4RANDOM_BUF_APPLE_ (!__APPLE__ || AG_MACOS_PREREQ(10,7,0) || AG_IPHONE_PREREQ(4,3))
662#define HAVE_ARC4RANDOM_BUF_NETBSD_ (!__NetBSD__ || AG_NETBSD_PREREQ(6,0,0))
663#define HAVE_ARC4RANDOM_BUF_IFF_ (HAVE_ARC4RANDOM_BUF_APPLE_ && HAVE_ARC4RANDOM_BUF_NETBSD_)
664#define HAVE_ARC4RANDOM_BUF (HAVE_ARC4RANDOM && HAVE_ARC4RANDOM_BUF_IFF_)
665#endif
666
660#ifndef HAVE_ARC4RANDOM_STIR 667#ifndef HAVE_ARC4RANDOM_STIR
661#define HAVE_ARC4RANDOM_STIR HAVE_ARC4RANDOM_ADDRANDOM 668#define HAVE_ARC4RANDOM_STIR HAVE_ARC4RANDOM_ADDRANDOM
662#endif 669#endif
diff --git a/src/openssl.c b/src/openssl.c
index 78dbd65..88561aa 100644
--- a/src/openssl.c
+++ b/src/openssl.c
@@ -7824,11 +7824,11 @@ static int randL_stir(struct randL_state *st, unsigned rqstd) {
7824 int error; 7824 int error;
7825 unsigned char data[256]; 7825 unsigned char data[256];
7826 7826
7827#if HAVE_ARC4RANDOM 7827#if HAVE_ARC4RANDOM_BUF
7828 while (count < rqstd) { 7828 while (count < rqstd) {
7829 size_t n = MIN(rqstd - count, sizeof data); 7829 size_t n = MIN(rqstd - count, sizeof data);
7830 7830
7831 arc4random(data, n); 7831 arc4random_buf(data, n);
7832 7832
7833 RAND_seed(data, n); 7833 RAND_seed(data, n);
7834 7834