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