diff options
author | Michal Marek <mmarek@suse.cz> | 2014-03-05 13:27:41 +0100 |
---|---|---|
committer | Lucas De Marchi <lucas.demarchi@intel.com> | 2014-03-05 12:30:52 -0300 |
commit | aa878540e6f3825cd5cc86d0771e203a6da6231a (patch) | |
tree | 5839fa4093ee4fbbbb30afc1fbdad44f24d2f08d | |
parent | 519d27de5a209e3b64453e982feb6882ffd839c8 (diff) | |
download | kmod-aa878540e6f3825cd5cc86d0771e203a6da6231a.tar.gz |
libkmod-config: Only match dot before '=' in /proc/cmdline
Otherwise, we also parse strings like
BOOT_IMAGE=/boot/vmlinuz-3.12.12-57.g5f654cf-default
In practice, this is not a problem, because there is no module named
BOOT_IMAGE=/boot/vmlinuz-3. It just disturbs in modprobe -c output.
-rw-r--r-- | libkmod/libkmod-config.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/libkmod/libkmod-config.c b/libkmod/libkmod-config.c index 4417871..9905d5e 100644 --- a/libkmod/libkmod-config.c +++ b/libkmod/libkmod-config.c @@ -523,7 +523,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; + char *p, *modname, *param = NULL, *value = NULL, is_module = 1; fd = open("/proc/cmdline", O_RDONLY|O_CLOEXEC); if (fd < 0) { @@ -544,9 +544,11 @@ static int kmod_config_parse_kcmdline(struct kmod_config *config) switch (*p) { case ' ': *p = '\0'; - kcmdline_parse_result(config, modname, param, value); + if (is_module) + kcmdline_parse_result(config, modname, param, value); param = value = NULL; modname = p + 1; + is_module = 1; break; case '.': if (param == NULL) { @@ -557,12 +559,15 @@ static int kmod_config_parse_kcmdline(struct kmod_config *config) case '=': if (param != NULL) value = p + 1; + else + is_module = 0; break; } } *p = '\0'; - kcmdline_parse_result(config, modname, param, value); + if (is_module) + kcmdline_parse_result(config, modname, param, value); return 0; } |