Free the tserver TLS object before freeing the channel
authorMatt Caswell <matt@openssl.org>
Thu, 18 Jan 2024 12:16:55 +0000 (12:16 +0000)
committerMatt Caswell <matt@openssl.org>
Wed, 31 Jan 2024 10:10:55 +0000 (10:10 +0000)
The TLS object may make callbacks into QUIC during cleanup so we must
free it first.

Reviewed-by: Hugo Landau <hlandau@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/23256)

ssl/quic/quic_tserver.c

index 159669ef8f819ab1115a09df798b33b83784a61c..831d0463bddcc14aab63f5e0a6c311d7d1d7a212 100644 (file)
@@ -173,13 +173,13 @@ void ossl_quic_tserver_free(QUIC_TSERVER *srv)
     if (srv == NULL)
         return;
 
+    SSL_free(srv->tls);
     ossl_quic_channel_free(srv->ch);
     ossl_quic_port_free(srv->port);
     ossl_quic_engine_free(srv->engine);
     BIO_free_all(srv->args.net_rbio);
     BIO_free_all(srv->args.net_wbio);
     OPENSSL_free(srv->ssl);
-    SSL_free(srv->tls);
     SSL_CTX_free(srv->ctx);
 #if defined(OPENSSL_THREADS)
     ossl_crypto_mutex_free(&srv->mutex);