summaryrefslogtreecommitdiffstats
path: root/ssl
diff options
context:
space:
mode:
authorMiƂosz Kaniewski <milosz.kaniewski@gmail.com>2020-06-30 21:46:38 +0200
committerBenjamin Kaduk <kaduk@mit.edu>2020-07-01 17:25:48 -0700
commit94941cada25433a7dca35b5b9f8cbb751ab65ab3 (patch)
tree4ba6be808985e1a643570f93546ea672fb299c71 /ssl
parent69f982679ec0c8887a4324d8518a33808fee1cd7 (diff)
Free pre_proc_exts in SSL_free()
Usually it will be freed in tls_early_post_process_client_hello(). However if a ClientHello callback will be used and will return SSL_CLIENT_HELLO_RETRY then tls_early_post_process_client_hello() may never come to the point where pre_proc_exts is freed. Fixes #12194 CLA: trivial Reviewed-by: Paul Dale <paul.dale@oracle.com> Reviewed-by: Ben Kaduk <kaduk@mit.edu> (Merged from https://github.com/openssl/openssl/pull/12330)
Diffstat (limited to 'ssl')
-rw-r--r--ssl/ssl_lib.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/ssl/ssl_lib.c b/ssl/ssl_lib.c
index fea040289b..dd83f373b2 100644
--- a/ssl/ssl_lib.c
+++ b/ssl/ssl_lib.c
@@ -1217,6 +1217,8 @@ void SSL_free(SSL *s)
OPENSSL_free(s->ext.ocsp.resp);
OPENSSL_free(s->ext.alpn);
OPENSSL_free(s->ext.tls13_cookie);
+ if (s->clienthello != NULL)
+ OPENSSL_free(s->clienthello->pre_proc_exts);
OPENSSL_free(s->clienthello);
OPENSSL_free(s->pha_context);
EVP_MD_CTX_free(s->pha_dgst);