libkmod: Fix handling of quotes in kernel command line
authorJames Minor <james.minor@ni.com>
Fri, 20 Jan 2017 23:15:50 +0000 (17:15 -0600)
committerLucas De Marchi <lucas.demarchi@intel.com>
Mon, 23 Jan 2017 18:47:13 +0000 (10:47 -0800)
If a module parameter on the command line contains quotes, any
spaces inside those quotes should be included as part of the
parameter.

Signed-off-by: James Minor <james.minor@ni.com>
libkmod/libkmod-config.c

index 19f56a7..0596025 100644 (file)
@@ -497,6 +497,7 @@ static int kmod_config_parse_kcmdline(struct kmod_config *config)
        char buf[KCMD_LINE_SIZE];
        int fd, err;
        char *p, *modname,  *param = NULL, *value = NULL, is_module = 1;
+       bool is_quoted = false;
 
        fd = open("/proc/cmdline", O_RDONLY|O_CLOEXEC);
        if (fd < 0) {
@@ -514,6 +515,12 @@ static int kmod_config_parse_kcmdline(struct kmod_config *config)
        }
 
        for (p = buf, modname = buf; *p != '\0' && *p != '\n'; p++) {
+               if (*p == '"') {
+                       is_quoted = !is_quoted;
+                       continue;
+               }
+               if (is_quoted)
+                       continue;
                switch (*p) {
                case ' ':
                        *p = '\0';