From 99d045d33f9805d7f81012d2bf7f01edcddb97f2 Mon Sep 17 00:00:00 2001 From: Ernestas Kulik Date: Tue, 4 Jun 2019 15:46:20 +0200 Subject: [PATCH] lib: problem_data: Use g_strsplit() Our own implementation is rather opaque and is causing Coverity to yell. Signed-off-by: Ernestas Kulik --- src/lib/problem_data.c | 44 ++---------------------------------------- 1 file changed, 2 insertions(+), 42 deletions(-) diff --git a/src/lib/problem_data.c b/src/lib/problem_data.c index 2f66fb3..fdecc83 100644 --- a/src/lib/problem_data.c +++ b/src/lib/problem_data.c @@ -519,56 +519,16 @@ problem_data_t *create_problem_data_from_dump_dir(struct dump_dir *dd) return problem_data; } -/* - * Returns NULL-terminated char *vector[]. Result itself must be freed, - * but do no free list elements. IOW: do free(result), but never free(result[i])! - * If comma_separated_list is NULL or "", returns NULL. - */ -static char **build_exclude_vector(const char *comma_separated_list) -{ - char **exclude_items = NULL; - if (comma_separated_list && comma_separated_list[0]) - { - /* even w/o commas, we'll need two elements: - * exclude_items[0] = "name" - * exclude_items[1] = NULL - */ - unsigned cnt = 2; - - const char *cp = comma_separated_list; - while (*cp) - if (*cp++ == ',') - cnt++; - - /* We place the string directly after the char *vector[cnt]: */ - exclude_items = xzalloc(cnt * sizeof(exclude_items[0]) + (cp - comma_separated_list) + 1); - char *p = strcpy((char*)&exclude_items[cnt], comma_separated_list); - - char **pp = exclude_items; - *pp++ = p; - while (*p) - { - if (*p++ == ',') - { - p[-1] = '\0'; - *pp++ = p; - } - } - } - - return exclude_items; -} - problem_data_t *create_problem_data_for_reporting(const char *dump_dir_name) { struct dump_dir *dd = dd_opendir(dump_dir_name, /*flags:*/ 0); if (!dd) return NULL; /* dd_opendir already emitted error msg */ - char **exclude_items = build_exclude_vector(getenv("EXCLUDE_FROM_REPORT")); + char **exclude_items = g_strsplit(getenv("EXCLUDE_FROM_REPORT"), ",", -1); problem_data_t *problem_data = problem_data_new(); problem_data_load_from_dump_dir(problem_data, dd, exclude_items); dd_close(dd); - free(exclude_items); + g_strfreev(exclude_items); return problem_data; } -- 2.21.0