Fix: Handle empty daemon configuration file lines
authorJérémie Galarneau <jeremie.galarneau@efficios.com>
Sun, 23 Nov 2014 16:30:33 +0000 (11:30 -0500)
committerJérémie Galarneau <jeremie.galarneau@efficios.com>
Thu, 27 Nov 2014 17:08:30 +0000 (12:08 -0500)
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 <jeremie.galarneau@efficios.com>
src/bin/lttng-sessiond/main.c

index 3910f4fd3a8896371d85ff6cf79cd5f5d5f096d3..590df85b67f2f69a25ea6842c31fc4231329eaae 100644 (file)
@@ -4256,6 +4256,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);
@@ -4447,6 +4458,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;
 }
 
This page took 0.028555 seconds and 4 git commands to generate.