From e00f5bddde0daff900cbd93e1ee0530ad1ae06ce Mon Sep 17 00:00:00 2001 From: Michal Schmidt Date: Tue, 21 Jul 2015 18:26:09 +0200 Subject: udev: fix crash with invalid udev.log-priority Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=1245293 --- src/udev/udevd.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/udev/udevd.c b/src/udev/udevd.c index 0661f7be00..f14efbe203 100644 --- a/src/udev/udevd.c +++ b/src/udev/udevd.c @@ -1377,7 +1377,10 @@ static int parse_proc_cmdline_item(const char *key, const char *value) { int prio; prio = util_log_priority(value); - log_set_max_level(prio); + if (prio < 0) + log_warning("invalid udev.log-priority ignored: %s", value); + else + log_set_max_level(prio); } else if (streq(key, "children-max")) { r = safe_atou(value, &arg_children_max); if (r < 0) -- cgit v1.2.3-54-g00ecf From 3567afa5b4775cf74bc92617cc716b4f4c28a120 Mon Sep 17 00:00:00 2001 From: Michal Schmidt Date: Tue, 21 Jul 2015 18:35:18 +0200 Subject: udev: unify reporting of invalid cmdline keys This way it does not need distinct string literals and it also preserves the "rd." prefix. --- src/udev/udevd.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/udev/udevd.c b/src/udev/udevd.c index f14efbe203..945845d72c 100644 --- a/src/udev/udevd.c +++ b/src/udev/udevd.c @@ -1358,6 +1358,7 @@ static int listen_fds(int *rctrl, int *rnetlink) { * udev.event-timeout= seconds to wait before terminating an event */ static int parse_proc_cmdline_item(const char *key, const char *value) { + const char *full_key = key; int r; assert(key); @@ -1378,27 +1379,27 @@ static int parse_proc_cmdline_item(const char *key, const char *value) { prio = util_log_priority(value); if (prio < 0) - log_warning("invalid udev.log-priority ignored: %s", value); - else - log_set_max_level(prio); + goto invalid; + log_set_max_level(prio); } else if (streq(key, "children-max")) { r = safe_atou(value, &arg_children_max); if (r < 0) - log_warning("invalid udev.children-max ignored: %s", value); + goto invalid; } else if (streq(key, "exec-delay")) { r = safe_atoi(value, &arg_exec_delay); if (r < 0) - log_warning("invalid udev.exec-delay ignored: %s", value); + goto invalid; } else if (streq(key, "event-timeout")) { r = safe_atou64(value, &arg_event_timeout_usec); if (r < 0) - log_warning("invalid udev.event-timeout ignored: %s", value); - else { - arg_event_timeout_usec *= USEC_PER_SEC; - arg_event_timeout_warn_usec = (arg_event_timeout_usec / 3) ? : 1; - } + goto invalid; + arg_event_timeout_usec *= USEC_PER_SEC; + arg_event_timeout_warn_usec = (arg_event_timeout_usec / 3) ? : 1; } + return 0; +invalid: + log_warning("invalid %s ignored: %s", full_key, value); return 0; } -- cgit v1.2.3-54-g00ecf