summaryrefslogtreecommitdiffstats
path: root/ssl
diff options
context:
space:
mode:
authorAlexey Fofanov <avoget@gmail.com>2023-10-18 14:23:22 +0300
committerTomas Mraz <tomas@openssl.org>2023-11-13 12:52:43 +0100
commit9890cc42daff5e2d0cad01ac4bf78c391f599a6e (patch)
tree8eddee8dfdb5f3fe35238065fbeea551958b2245 /ssl
parentae9fe65d9f85e027bd7428e0f84aa46ab368880e (diff)
set_client_ciphersuite(): Fix for potential UB if session->cipher is NULL
This currently cannot happen without an application overriding the session with some bogus data so this is an ossl_assert() check. Reviewed-by: Matt Caswell <matt@openssl.org> Reviewed-by: Tomas Mraz <tomas@openssl.org> (Merged from https://github.com/openssl/openssl/pull/22418)
Diffstat (limited to 'ssl')
-rw-r--r--ssl/statem/statem_clnt.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/ssl/statem/statem_clnt.c b/ssl/statem/statem_clnt.c
index cbf5a57beb..3b3c51e41c 100644
--- a/ssl/statem/statem_clnt.c
+++ b/ssl/statem/statem_clnt.c
@@ -1427,6 +1427,10 @@ static int set_client_ciphersuite(SSL_CONNECTION *s,
if (SSL_CONNECTION_IS_TLS13(s)) {
const EVP_MD *md = ssl_md(sctx, c->algorithm2);
+ if (!ossl_assert(s->session->cipher != NULL)) {
+ SSLfatal(s, SSL_AD_INTERNAL_ERROR, ERR_R_INTERNAL_ERROR);
+ return 0;
+ }
/*
* In TLSv1.3 it is valid for the server to select a different
* ciphersuite as long as the hash is the same.