From b8d80f0e9346ef7645dbc71a3e44b8087b70f3f2 Mon Sep 17 00:00:00 2001 From: Joshua Rogers Date: Sat, 11 Oct 2025 20:05:38 +0800 Subject: [PATCH] ssl: set tmp.pkey only after successful derive MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Assign s->s3.tmp.pkey after ssl_derive succeeds and free skey on failure to avoid a dangling state. Signed-off-by: Joshua Rogers Reviewed-by: Saša Nedvědický Reviewed-by: Tomas Mraz (Merged from https://github.com/openssl/openssl/pull/28878) --- ssl/statem/extensions_srvr.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ssl/statem/extensions_srvr.c b/ssl/statem/extensions_srvr.c index c616ee0c977..ac2bddde3b0 100644 --- a/ssl/statem/extensions_srvr.c +++ b/ssl/statem/extensions_srvr.c @@ -2011,11 +2011,12 @@ EXT_RETURN tls_construct_stoc_key_share(SSL_CONNECTION *s, WPACKET *pkt, /* * This causes the crypto state to be updated based on the derived keys */ - s->s3.tmp.pkey = skey; if (ssl_derive(s, skey, ckey, 1) == 0) { /* SSLfatal() already called */ + EVP_PKEY_free(skey); return EXT_RETURN_FAIL; } + s->s3.tmp.pkey = skey; } else { /* KEM mode */ unsigned char *ct = NULL; -- 2.47.3