From 3306dfd21348c7a724b0a7ae0f167ec4c69b7c40 Mon Sep 17 00:00:00 2001 From: Joseph Hunkeler Date: Mon, 12 Aug 2024 12:12:03 -0400 Subject: bugfix: free data at index during strlist_set operation * Previous behavior of setting the pointer to NULL introduced a subtle memory leak * Set strlist error when index it out of range --- src/strlist.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/strlist.c b/src/strlist.c index d1bb926..de76744 100644 --- a/src/strlist.c +++ b/src/strlist.c @@ -315,11 +315,12 @@ size_t strlist_count(struct StrList *pStrList) { void strlist_set(struct StrList **pStrList, size_t index, char *value) { char *tmp = NULL; if (*pStrList == NULL || index > strlist_count(*pStrList)) { + strlist_errno = STRLIST_E_OUT_OF_RANGE; return; } if (value == NULL) { - (*pStrList)->data[index] = NULL; + guard_free((*pStrList)->data[index]); } else { tmp = realloc((*pStrList)->data[index], (strlen(value) + 1) * sizeof(char *)); if (!tmp) { -- cgit