File: 46_lib-hello_ext.c-Add-gnutls_free-to-avoid-memory-leak.patch

package info (click to toggle)
gnutls28 3.8.9-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, trixie
  • size: 83,872 kB
  • sloc: ansic: 388,071; asm: 117,804; sh: 18,477; makefile: 6,732; yacc: 1,858; python: 1,399; cpp: 1,243; perl: 995; sed: 16
file content (44 lines) | stat: -rw-r--r-- 1,415 bytes parent folder | download
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