From 95a11f8c16e30f15f6d1c8d12a980d86b493daa9 Mon Sep 17 00:00:00 2001
From: Paul Bakker
Date: Wed, 30 Apr 2014 16:02:38 +0200
Subject: [PATCH] On OpenBSD, use arc4random_buf() instead of rand() to prevent
warnings
---
ChangeLog | 1 +
library/rsa.c | 7 +++++++
tests/suites/helpers.function | 7 +++++++
3 files changed, 15 insertions(+)
diff --git a/ChangeLog b/ChangeLog
index cddf071ba..d7d7004da 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -52,6 +52,7 @@ Bugfix
* Improve interoperability by not writing extension length in ClientHello
when no extensions are present (found by Matthew Page)
* rsa_check_pubkey() now allows an E up to N
+ * On OpenBSD, use arc4random_buf() instead of rand() to prevent warnings
= Version 1.2.10 released 2013-10-07
Changes
diff --git a/library/rsa.c b/library/rsa.c
index 98d777078..75e7a9aed 100644
--- a/library/rsa.c
+++ b/library/rsa.c
@@ -1408,6 +1408,7 @@ void rsa_free( rsa_context *ctx )
static int myrand( void *rng_state, unsigned char *output, size_t len )
{
+#if !defined(__OpenBSD__)
size_t i;
if( rng_state != NULL )
@@ -1415,6 +1416,12 @@ static int myrand( void *rng_state, unsigned char *output, size_t len )
for( i = 0; i < len; ++i )
output[i] = rand();
+#else
+ if( rng_state != NULL )
+ rng_state = NULL;
+
+ arc4random_buf( output, len );
+#endif /* !OpenBSD */
return( 0 );
}
diff --git a/tests/suites/helpers.function b/tests/suites/helpers.function
index c289cc8ef..7f700838b 100644
--- a/tests/suites/helpers.function
+++ b/tests/suites/helpers.function
@@ -97,6 +97,7 @@ void hexify(unsigned char *obuf, const unsigned char *ibuf, int len)
*/
static int rnd_std_rand( void *rng_state, unsigned char *output, size_t len )
{
+#if !defined(__OpenBSD__)
size_t i;
if( rng_state != NULL )
@@ -104,6 +105,12 @@ static int rnd_std_rand( void *rng_state, unsigned char *output, size_t len )
for( i = 0; i < len; ++i )
output[i] = rand();
+#else
+ if( rng_state != NULL )
+ rng_state = NULL;
+
+ arc4random_buf( output, len );
+#endif /* !OpenBSD */
return( 0 );
}