summaryrefslogtreecommitdiff
path: root/src/lib/libssl/s23_clnt.c
diff options
context:
space:
mode:
authorjsing <>2014-10-18 16:13:16 +0000
committerjsing <>2014-10-18 16:13:16 +0000
commitc7ab256a26b40c83b42c202488c01636a208c01c (patch)
tree0ec0407532b236ff11b9134f214f8db715d84e63 /src/lib/libssl/s23_clnt.c
parentdd127b6b5a62ebd88f0cbb2e6d7d749d20363a16 (diff)
downloadopenbsd-c7ab256a26b40c83b42c202488c01636a208c01c.tar.gz
openbsd-c7ab256a26b40c83b42c202488c01636a208c01c.tar.bz2
openbsd-c7ab256a26b40c83b42c202488c01636a208c01c.zip
Use arc4random_buf() instead of RAND_bytes() or RAND_pseudo_bytes().
arc4random provides high quality pseudo-random numbers, hence there is no need to differentiate between "strong" and "pseudo". Furthermore, the arc4random_buf() function is guaranteed to succeed, which avoids the need to check for and handle failure, simplifying the code. It is worth noting that a number of the replaced RAND_bytes() and RAND_pseudo_bytes() calls were missing return value checks and these functions can fail for a number of reasons (at least in OpenSSL - thankfully they were converted to wrappers around arc4random_buf() some time ago in LibreSSL). ok beck@ deraadt@ miod@
Diffstat (limited to '')
-rw-r--r--src/lib/libssl/s23_clnt.c6
1 files changed, 2 insertions, 4 deletions
diff --git a/src/lib/libssl/s23_clnt.c b/src/lib/libssl/s23_clnt.c
index 81683e5949..7967344e2a 100644
--- a/src/lib/libssl/s23_clnt.c
+++ b/src/lib/libssl/s23_clnt.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: s23_clnt.c,v 1.32 2014/08/10 14:42:56 jsing Exp $ */ 1/* $OpenBSD: s23_clnt.c,v 1.33 2014/10/18 16:13:16 jsing Exp $ */
2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) 2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3 * All rights reserved. 3 * All rights reserved.
4 * 4 *
@@ -112,7 +112,6 @@
112#include <stdio.h> 112#include <stdio.h>
113#include "ssl_locl.h" 113#include "ssl_locl.h"
114#include <openssl/buffer.h> 114#include <openssl/buffer.h>
115#include <openssl/rand.h>
116#include <openssl/objects.h> 115#include <openssl/objects.h>
117#include <openssl/evp.h> 116#include <openssl/evp.h>
118 117
@@ -317,8 +316,7 @@ ssl23_client_hello(SSL *s)
317 316
318 buf = (unsigned char *)s->init_buf->data; 317 buf = (unsigned char *)s->init_buf->data;
319 if (s->state == SSL23_ST_CW_CLNT_HELLO_A) { 318 if (s->state == SSL23_ST_CW_CLNT_HELLO_A) {
320 p = s->s3->client_random; 319 arc4random_buf(s->s3->client_random, SSL3_RANDOM_SIZE);
321 RAND_pseudo_bytes(p, SSL3_RANDOM_SIZE);
322 320
323 if (version == TLS1_2_VERSION) { 321 if (version == TLS1_2_VERSION) {
324 version_major = TLS1_2_VERSION_MAJOR; 322 version_major = TLS1_2_VERSION_MAJOR;