From: Jérémie Galarneau Date: Sun, 23 Nov 2014 16:30:33 +0000 (-0500) Subject: Fix: Handle empty daemon configuration file lines X-Git-Tag: v2.5.3~23 X-Git-Url: https://git.lttng.org./?a=commitdiff_plain;h=165aa49a26f9f5e53d8f87f092b8ebb6d441de78;p=lttng-tools.git Fix: Handle empty daemon configuration file lines Empty daemon configuration file lines such as my_option= will cause set_option to be called with an arg value of length 0 which should display a warning. Signed-off-by: Jérémie Galarneau --- diff --git a/src/bin/lttng-sessiond/main.c b/src/bin/lttng-sessiond/main.c index adf8ea994..a3e08ec51 100644 --- a/src/bin/lttng-sessiond/main.c +++ b/src/bin/lttng-sessiond/main.c @@ -4231,6 +4231,17 @@ static int set_option(int opt, const char *arg, const char *optname) { int ret = 0; + if (arg && arg[0] == '\0') { + /* + * This only happens if the value is read from daemon config + * file. This means the option requires an argument and the + * configuration file contains a line such as: + * my_option = + */ + ret = -EINVAL; + goto end; + } + switch (opt) { case 0: fprintf(stderr, "option %s", optname); @@ -4414,6 +4425,22 @@ static int set_option(int opt, const char *arg, const char *optname) ret = -1; } + if (ret == -EINVAL) { + const char *opt_name = "unknown"; + int i; + + for (i = 0; i < sizeof(long_options) / sizeof(struct option); + i++) { + if (opt == long_options[i].val) { + opt_name = long_options[i].name; + break; + } + } + + WARN("Invalid argument provided for option \"%s\", using default value.", + opt_name); + } +end: return ret; }