From: Jérémie Galarneau Date: Thu, 22 Apr 2021 18:47:14 +0000 (-0400) Subject: Fix: sessiond: leak of config_path on duplicate --config option X-Git-Url: http://git.efficios.com/?p=lttng-tools.git;a=commitdiff_plain;h=12c5f50afddfc4f620542860ac4a402b1884a022 Fix: sessiond: leak of config_path on duplicate --config option 1452207 Resource leak The system resource will not be reclaimed and reused, reducing the future availability of the resource. CID 1452373 (#3 of 3): Resource leak (RESOURCE_LEAK) 26. overwrite_var: Overwriting config_path in config_path = utils_expand_path(optarg) leaks the storage that config_path points to. Reported-by: Coverity Scan Signed-off-by: Jérémie Galarneau Change-Id: I70eff0f4de5ac9b84b699e88232669259eab54db --- diff --git a/src/bin/lttng-sessiond/main.c b/src/bin/lttng-sessiond/main.c index 55e0ad3d7..e271640db 100644 --- a/src/bin/lttng-sessiond/main.c +++ b/src/bin/lttng-sessiond/main.c @@ -791,7 +791,7 @@ static int set_options(int argc, char **argv) int ret = 0, c = 0, option_index = 0; int orig_optopt = optopt, orig_optind = optind; char *optstring; - const char *config_path = NULL; + char *config_path = NULL; optstring = utils_generate_optstring(long_options, sizeof(long_options) / sizeof(struct option)); @@ -815,6 +815,7 @@ static int set_options(int argc, char **argv) WARN("Getting '%s' argument from setuid/setgid binary refused for security reasons.", "-f, --config"); } else { + free(config_path); config_path = utils_expand_path(optarg); if (!config_path) { ERR("Failed to resolve path: %s", optarg); @@ -860,6 +861,7 @@ static int set_options(int argc, char **argv) } end: + free(config_path); free(optstring); return ret; }