From: Todd Short Date: Fri, 13 Aug 2021 13:59:59 +0000 (-0400) Subject: Fix potential double-free X-Git-Tag: openssl-3.0.0~116 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=0449702abc95a3af24c049cb02c01ca6a8015cef;p=thirdparty%2Fopenssl.git Fix potential double-free The `sk` variable is assigned to `s->session->peer_chain`. If `ssl3_digest_cached_records()` were to fail, then `sk` would still be non-NULL, and subsequently freed on the error return. When the session is freed, it will then attempt to free `s->session->peer_chain`, resulting in a double-free (of `sk`). Reviewed-by: Matt Caswell Reviewed-by: Tomas Mraz (Merged from https://github.com/openssl/openssl/pull/16309) --- diff --git a/ssl/statem/statem_srvr.c b/ssl/statem/statem_srvr.c index 2be50733fe6..d0d8d26e11e 100644 --- a/ssl/statem/statem_srvr.c +++ b/ssl/statem/statem_srvr.c @@ -3556,6 +3556,7 @@ MSG_PROCESS_RETURN tls_process_client_certificate(SSL *s, PACKET *pkt) sk_X509_pop_free(s->session->peer_chain, X509_free); s->session->peer_chain = sk; + sk = NULL; /* * Freeze the handshake buffer. For