On OpenBSD, use arc4random_buf() instead of rand() to prevent warnings
diff --git a/ChangeLog b/ChangeLog
index 5b1529c..2f5be94 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -24,6 +24,7 @@
* Improve interoperability by not writing extension length in ClientHello /
ServerHello 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
= PolarSSL 1.3.6 released on 2014-04-11
diff --git a/library/rsa.c b/library/rsa.c
index 7869d22..1786149 100644
--- a/library/rsa.c
+++ b/library/rsa.c
@@ -1469,6 +1469,7 @@
#if defined(POLARSSL_PKCS1_V15)
static int myrand( void *rng_state, unsigned char *output, size_t len )
{
+#if !defined(__OpenBSD__)
size_t i;
if( rng_state != NULL )
@@ -1476,6 +1477,12 @@
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 1e09666..f6a3529 100644
--- a/tests/suites/helpers.function
+++ b/tests/suites/helpers.function
@@ -105,6 +105,7 @@
*/
static int rnd_std_rand( void *rng_state, unsigned char *output, size_t len )
{
+#if !defined(__OpenBSD__)
size_t i;
if( rng_state != NULL )
@@ -112,6 +113,12 @@
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 );
}