The parsing check for invalid log level was not trying to catch
irrelevant numeric values.
A log level 0 is now a failure in options parsing so it can be caught early.
A log level higher than the max (8) is accepted with a warning message.

Signed-off-by: Thomas Monjalon <tho...@monjalon.net>
Acked-by: Bruce Richardson <bruce.richard...@intel.com>
Acked-by: Andrew Rybchenko <andrew.rybche...@oktetlabs.ru>
---
 lib/librte_eal/common/eal_common_options.c | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/lib/librte_eal/common/eal_common_options.c 
b/lib/librte_eal/common/eal_common_options.c
index 3675e55fc9..2df3ae04ea 100644
--- a/lib/librte_eal/common/eal_common_options.c
+++ b/lib/librte_eal/common/eal_common_options.c
@@ -1289,10 +1289,15 @@ eal_parse_log_level(const char *arg)
        }
 
        priority = eal_parse_log_priority(level);
-       if (priority < 0) {
-               fprintf(stderr, "invalid log priority: %s\n", level);
+       if (priority <= 0) {
+               fprintf(stderr, "Invalid log level: %s\n", level);
                goto fail;
        }
+       if (priority > (int)RTE_LOG_MAX) {
+               fprintf(stderr, "Log level %d higher than maximum (%d)\n",
+                               priority, RTE_LOG_MAX);
+               priority = RTE_LOG_MAX;
+       }
 
        if (regex) {
                if (rte_log_set_level_regexp(regex, priority) < 0) {
-- 
2.30.1

Reply via email to