Skip to content

Commit 9f2481d

Browse files
fix: Prevent wolfSSL SNI callback use-after-free
Co-authored-by: aider (gemini/gemini-2.5-pro) <aider@aider.chat>
1 parent 18388cc commit 9f2481d

1 file changed

Lines changed: 6 additions & 3 deletions

File tree

modules/tls_wolfssl/wolfssl_config.c

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -155,12 +155,16 @@ static int ssl_servername_cb(WOLFSSL *ssl, int *ret, void *exArg)
155155
struct tls_domain *dom;
156156
int rc;
157157

158-
if (!ssl || !exArg) {
158+
if (!ssl) {
159159
LM_ERR("Bad parameters in servername callback\n");
160160
return alert_warning;
161161
}
162162

163-
dom = (struct tls_domain *)exArg;
163+
dom = (struct tls_domain *)wolfSSL_get_ex_data(ssl, SSL_EX_DOM_IDX);
164+
if (!dom) {
165+
LM_ERR("Failed to get tls_domain pointer from SSL struct\n");
166+
return alert_warning;
167+
}
164168

165169
srvname = (char *)wolfSSL_get_servername(ssl, WOLFSSL_SNI_HOST_NAME);
166170
if (srvname && strlen(srvname) == 0) {
@@ -481,7 +485,6 @@ int _wolfssl_init_tls_dom(struct tls_domain *d, int init_flags)
481485

482486
if (mod_sni_cb && d->flags & DOM_FLAG_SRV) {
483487
wolfSSL_CTX_set_servername_callback(d->ctx, ssl_servername_cb);
484-
wolfSSL_CTX_set_servername_arg(d->ctx, d);
485488
}
486489

487490
if (d->flags & DOM_FLAG_SRV) {

0 commit comments

Comments
 (0)