summaryrefslogtreecommitdiff
path: root/src/lib/libssl/s3_clnt.c
diff options
context:
space:
mode:
authordoug <>2014-12-15 00:46:53 +0000
committerdoug <>2014-12-15 00:46:53 +0000
commit5ff3741c44f372895206f59414df34e2dcd5eaa0 (patch)
treea755a6603462bb1b649e3f343d73dd0e1c3b34c5 /src/lib/libssl/s3_clnt.c
parent02216b57a0ccb0dd187f3ea646c6ae40e827d3ae (diff)
downloadopenbsd-5ff3741c44f372895206f59414df34e2dcd5eaa0.tar.gz
openbsd-5ff3741c44f372895206f59414df34e2dcd5eaa0.tar.bz2
openbsd-5ff3741c44f372895206f59414df34e2dcd5eaa0.zip
Add error handling for EVP_DigestInit_ex().
A few EVP_DigestInit_ex() calls were left alone since reporting an error would change the public API. Changed internal ssl3_cbc_digest_record() to return a value due to the above change. It will also now set md_out_size=0 on failure. This is based on part of BoringSSL's commit to fix malloc crashes: https://boringssl.googlesource.com/boringssl/+/69a01608f33ab6fe2c3485d94aef1fe9eacf5364 ok miod@
Diffstat (limited to 'src/lib/libssl/s3_clnt.c')
-rw-r--r--src/lib/libssl/s3_clnt.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/src/lib/libssl/s3_clnt.c b/src/lib/libssl/s3_clnt.c
index 47b6824533..d1f2e05eb8 100644
--- a/src/lib/libssl/s3_clnt.c
+++ b/src/lib/libssl/s3_clnt.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: s3_clnt.c,v 1.102 2014/12/14 16:19:38 jsing Exp $ */ 1/* $OpenBSD: s3_clnt.c,v 1.103 2014/12/15 00:46:53 doug 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 *
@@ -1439,9 +1439,12 @@ ssl3_get_key_exchange(SSL *s)
1439 j = 0; 1439 j = 0;
1440 q = md_buf; 1440 q = md_buf;
1441 for (num = 2; num > 0; num--) { 1441 for (num = 2; num > 0; num--) {
1442 EVP_DigestInit_ex(&md_ctx, 1442 if (!EVP_DigestInit_ex(&md_ctx,
1443 (num == 2) ? s->ctx->md5 : s->ctx->sha1, 1443 (num == 2) ? s->ctx->md5 : s->ctx->sha1,
1444 NULL); 1444 NULL)) {
1445 al = SSL_AD_INTERNAL_ERROR;
1446 goto f_err;
1447 }
1445 EVP_DigestUpdate(&md_ctx, 1448 EVP_DigestUpdate(&md_ctx,
1446 s->s3->client_random, 1449 s->s3->client_random,
1447 SSL3_RANDOM_SIZE); 1450 SSL3_RANDOM_SIZE);
@@ -2245,7 +2248,8 @@ ssl3_send_client_key_exchange(SSL *s)
2245 nid = NID_id_GostR3411_94; 2248 nid = NID_id_GostR3411_94;
2246 else 2249 else
2247 nid = NID_id_tc26_gost3411_2012_256; 2250 nid = NID_id_tc26_gost3411_2012_256;
2248 EVP_DigestInit(ukm_hash, EVP_get_digestbynid(nid)); 2251 if (!EVP_DigestInit(ukm_hash, EVP_get_digestbynid(nid)))
2252 goto err;
2249 EVP_DigestUpdate(ukm_hash, 2253 EVP_DigestUpdate(ukm_hash,
2250 s->s3->client_random, SSL3_RANDOM_SIZE); 2254 s->s3->client_random, SSL3_RANDOM_SIZE);
2251 EVP_DigestUpdate(ukm_hash, 2255 EVP_DigestUpdate(ukm_hash,