]> git.ipfire.org Git - thirdparty/openssl.git/commitdiff
Free the QUIC TLS object before freeing the channel
authorMatt Caswell <matt@openssl.org>
Thu, 18 Jan 2024 12:25:47 +0000 (12:25 +0000)
committerMatt Caswell <matt@openssl.org>
Wed, 31 Jan 2024 10:15:01 +0000 (10:15 +0000)
Freeing the QUIC TLS object may make calls back into QUIC so we should
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)

(cherry picked from commit f7f2b665cf91650deb28beb1145ea3eca7df67aa)

ssl/quic/quic_impl.c

index 399d1d2afd15e468b8c6044db6e056aca7be3d58..93fead158456966e394e65b754fb4b022554f517 100644 (file)
@@ -542,18 +542,22 @@ void ossl_quic_free(SSL *s)
     }
 #endif
 
+    SSL_free(ctx.qc->tls);
+
     ossl_quic_channel_free(ctx.qc->ch);
 
     BIO_free_all(ctx.qc->net_rbio);
     BIO_free_all(ctx.qc->net_wbio);
 
-    /* Note: SSL_free calls OPENSSL_free(qc) for us */
-
-    SSL_free(ctx.qc->tls);
     quic_unlock(ctx.qc); /* tsan doesn't like freeing locked mutexes */
 #if defined(OPENSSL_THREADS)
     ossl_crypto_mutex_free(&ctx.qc->mutex);
 #endif
+
+    /*
+     * Note: SSL_free (that called this function) calls OPENSSL_free(ctx.qc) for
+     * us
+     */
 }
 
 /* SSL method init */