|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
From bedfb81393f6718d07dc7857bd94ddf0c9e17d67 Mon Sep 17 00:00:00 2001
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
Date: Sat, 1 Nov 2014 12:06:41 -0400
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
Subject: [PATCH] libudev: do not accept invalid log levels
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
Invalid log levels lead to a assert failure later on.
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
https://bugs.freedesktop.org/show_bug.cgi?id=85657
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
(cherry picked from commit ee7122c0ec6aa11f02e9e8d94254b353f12d2c14)
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
---
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
src/libudev/libudev-util.c | 10 +++++++---
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
src/libudev/libudev.c | 19 ++++++++++++++++---
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
2 files changed, 23 insertions(+), 6 deletions(-)
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
diff --git a/src/libudev/libudev-util.c b/src/libudev/libudev-util.c
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
index f3fdf3b5aa..0bc10f3470 100644
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
--- a/src/libudev/libudev-util.c
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
+++ b/src/libudev/libudev-util.c
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
@@ -159,9 +159,13 @@ int util_log_priority(const char *priority)
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
char *endptr;
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
int prio;
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
- prio = strtol(priority, &endptr, 10);
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
- if (endptr[0] == '\0' || isspace(endptr[0]))
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
- return prio;
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
+ prio = strtoul(priority, &endptr, 10);
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
+ if (endptr[0] == '\0' || isspace(endptr[0])) {
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
+ if (prio >= 0 && prio <= 7)
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
+ return prio;
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
+ else
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
+ return -ERANGE;
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
+ }
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
return log_level_from_string(priority);
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
}
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
diff --git a/src/libudev/libudev.c b/src/libudev/libudev.c
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
index 7803863b2e..8464427651 100644
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
--- a/src/libudev/libudev.c
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
+++ b/src/libudev/libudev.c
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
@@ -193,7 +193,13 @@ _public_ struct udev *udev_new(void)
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
}
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
if (streq(key, "udev_log")) {
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
- udev_set_log_priority(udev, util_log_priority(val));
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
+ int prio;
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
+
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
+ prio = util_log_priority(val);
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
+ if (prio < 0)
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
+ udev_err(udev, "/etc/udev/udev.conf:%u: invalid logging level '%s', ignoring.\n", line_nr, val);
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
+ else
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
+ udev_set_log_priority(udev, prio);
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
continue;
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
}
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
}
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
@@ -201,8 +207,15 @@ _public_ struct udev *udev_new(void)
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
/* environment overrides config */
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
env = secure_getenv("UDEV_LOG");
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
- if (env != NULL)
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
- udev_set_log_priority(udev, util_log_priority(env));
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
+ if (env != NULL) {
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
+ int prio;
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
+
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
+ prio = util_log_priority(env);
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
+ if (prio < 0)
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
+ udev_err(udev, "$UDEV_LOG specifies invalid logging level '%s', ignoring.\n", env);
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
+ else
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
+ udev_set_log_priority(udev, prio);
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
+ }
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
return udev;
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
}
|