From 2c92cde5537221389783ad30b96dbb7df9fb52d6 Mon Sep 17 00:00:00 2001 From: Danny Holman Date: Tue, 13 Jun 2023 23:51:06 -0500 Subject: server: util: fix a memory leak in str_split Fix a memory access violation in str_split() that would cause the C&C server to crash unexpectedly. Signed-off-by: Danny Holman --- server/src/util.c | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/server/src/util.c b/server/src/util.c index 068da0a..f9053f5 100644 --- a/server/src/util.c +++ b/server/src/util.c @@ -58,16 +58,19 @@ char* str_strip(char *str) { } char** str_split(char *str, const char *delim) { - char *saveptr; - char *token = strtok_r(str, delim, &saveptr); - token = str_strip(token); + size_t count = 0; char **ret = NULL; - int count = -1; + char *token; + char *saveptr; + token = strtok_r(str, delim, &saveptr); while (token != NULL) { count++; - ret = realloc(ret, sizeof(char*) * (count+1)); - ret[count] = token; + ret = realloc(ret, sizeof(char*) * count); + ret[count-1] = strdup(str_strip(token)); token = strtok_r(NULL, delim, &saveptr); } + count++; + ret = realloc(ret, sizeof(char*) * count); + ret[count-1] = NULL; return ret; } -- cgit v1.2.3