1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
|
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
|