From 7d3bcf18a9e116e25b75d5fa8a72ae1ebce687e0 Mon Sep 17 00:00:00 2001
From: "Rob Swindell (on ChromeOS)" <rob@synchro.net>
Date: Sun, 30 Apr 2023 11:31:39 -0700
Subject: [PATCH] Fix memory leak in iniFreeParsedSections(), wasn't freeing
 the list member

The 'list' member was allocated by iniParseSections() but never freed.

Caught be Nelgin's recent valgrind report, e.g.:

==2725235== 56 bytes in 1 blocks are indirectly lost in loss record 82 of 191
==2725235==    at 0x484DCD3: realloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==2725235==    by 0x4FA351C: strListAnnex (in /home/bbs/sbbs/repo/src/sbbs3/gcc.linux.x64.lib.release/libsbbs.so)
==2725235==    by 0x4F9ADDE: iniParseSections (in /home/bbs/sbbs/repo/src/sbbs3/gcc.linux.x64.lib.release/libsbbs.so)
==2725235==    by 0x49F1F0A: read_chat_cfg (in /home/bbs/sbbs/repo/src/sbbs3/gcc.linux.x64.lib.release/libsbbs.so)
==2725235==    by 0x49E8BF1: load_cfg (in /home/bbs/sbbs/repo/src/sbbs3/gcc.linux.x64.lib.release/libsbbs.so)
==2725235==    by 0x5C14C75: ftp_server (in /home/bbs/sbbs/repo/src/sbbs3/gcc.linux.x64.lib.release/libftpsrvr.so)
==2725235==    by 0x5D5AB42: start_thread (pthread_create.c:442)
==2725235==    by 0x5DEBBB3: clone (clone.S:100)
---
 src/xpdev/ini_file.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/src/xpdev/ini_file.c b/src/xpdev/ini_file.c
index ee838392c7..2e1b6ff49d 100644
--- a/src/xpdev/ini_file.c
+++ b/src/xpdev/ini_file.c
@@ -1605,6 +1605,7 @@ void* iniFreeParsedSections(named_str_list_t** list)
 
 	for(i = 0; list[i] != NULL; ++i) {
 		free(list[i]->name);
+		free(list[i]->list);
 		free(list[i]);
 	}
 
-- 
GitLab