From 16737b7dc4db61b72000482eea508f181c275722 Mon Sep 17 00:00:00 2001 From: Garrett D'Amore Date: Sun, 29 Jun 2025 18:49:06 -0700 Subject: TLS: Configuration does not need to keep a reference to the engine. This may resolve a surprising NULL pointer dereference. --- src/supplemental/tls/tls_common.c | 13 +++++-------- src/supplemental/tls/tls_common.h | 1 - 2 files changed, 5 insertions(+), 9 deletions(-) (limited to 'src') diff --git a/src/supplemental/tls/tls_common.c b/src/supplemental/tls/tls_common.c index f3186493..5c0dcd5d 100644 --- a/src/supplemental/tls/tls_common.c +++ b/src/supplemental/tls/tls_common.c @@ -147,9 +147,7 @@ nni_tls_peer_cn(nni_tls_conn *conn) int nni_tls_init(nni_tls_conn *conn, nng_tls_config *cfg) { - const nng_tls_engine *eng; - - eng = cfg->engine; + const nng_tls_engine *eng = &nng_tls_engine_ops; nni_mtx_lock(&cfg->lock); cfg->busy = true; @@ -763,11 +761,10 @@ nng_tls_config_alloc(nng_tls_config **cfg_p, nng_tls_mode mode) return (NNG_ENOMEM); } - cfg->ops = *eng->config_ops; - cfg->size = size; - cfg->engine = eng; - cfg->ref = 1; - cfg->busy = false; + cfg->ops = *eng->config_ops; + cfg->size = size; + cfg->ref = 1; + cfg->busy = false; nni_mtx_init(&cfg->lock); if ((rv = cfg->ops.init((void *) (cfg + 1), mode)) != 0) { diff --git a/src/supplemental/tls/tls_common.h b/src/supplemental/tls/tls_common.h index 14bb0cf7..3d29583b 100644 --- a/src/supplemental/tls/tls_common.h +++ b/src/supplemental/tls/tls_common.h @@ -41,7 +41,6 @@ struct nng_tls_config { nng_tls_engine_config_ops ops; - const nng_tls_engine *engine; // store this so we can verify nni_mtx lock; int ref; bool busy; -- cgit v1.2.3-70-g09d2