From: Michal Marek Date: Wed, 5 Mar 2014 12:27:41 +0000 (+0100) Subject: libkmod-config: Only match dot before '=' in /proc/cmdline X-Git-Tag: v17~29 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=aa87854;p=thirdparty%2Fkmod.git 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. --- diff --git a/libkmod/libkmod-config.c b/libkmod/libkmod-config.c index 4417871a..9905d5ed 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; }