From 1b69a374e656967be41200fd93303e6ed82a1ba4 Mon Sep 17 00:00:00 2001
From: Jiasheng Jiang <jian1000@purdue.edu>
Date: Sat, 5 Jul 2025 00:56:36 +0000
Subject: [PATCH] lib/hello_ext.c: Add gnutls_free() to avoid memory leak

Add gnutls_free() to free tmp_mod.name in the error handling to avoid memory leak.

Fixes: 5bba569b4 ("gnutls_session_ext_register: keep track of extension name")
Signed-off-by: JiashengJiang <jiasheng@purdue.edu>
---
 lib/hello_ext.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/lib/hello_ext.c b/lib/hello_ext.c
index d677addd75..94e6d863b3 100644
--- a/lib/hello_ext.c
+++ b/lib/hello_ext.c
@@ -1001,21 +1001,23 @@ int gnutls_session_ext_register(gnutls_session_t session, const char *name,
 		if (IS_DTLS(session))
 			tmp_mod.validity |= GNUTLS_EXT_FLAG_DTLS;
 		else
 			tmp_mod.validity |= GNUTLS_EXT_FLAG_TLS;
 	}
 
 	if (unlikely(INT_ADD_OVERFLOW(session->internals.rexts_size, 1))) {
+		gnutls_free(tmp_mod.name);
 		return gnutls_assert_val(GNUTLS_E_MEMORY_ERROR);
 	}
 
 	exts = _gnutls_reallocarray(session->internals.rexts,
 				    session->internals.rexts_size + 1,
 				    sizeof(*exts));
 	if (exts == NULL) {
+		gnutls_free(tmp_mod.name);
 		return gnutls_assert_val(GNUTLS_E_MEMORY_ERROR);
 	}
 
 	session->internals.rexts = exts;
 
 	memcpy(&session->internals.rexts[session->internals.rexts_size],
 	       &tmp_mod, sizeof(hello_ext_entry_st));
-- 
2.47.2

