From: James Minor Date: Fri, 20 Jan 2017 23:15:50 +0000 (-0600) Subject: libkmod: Fix handling of quotes in kernel command line X-Git-Tag: v24~12 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=f27a2b12748b55abdbdeba6ec3976033bd257947;p=thirdparty%2Fkmod.git libkmod: Fix handling of quotes in kernel command line 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 --- diff --git a/libkmod/libkmod-config.c b/libkmod/libkmod-config.c index 19f56a71..05960259 100644 --- a/libkmod/libkmod-config.c +++ b/libkmod/libkmod-config.c @@ -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';