Neels Hofmeyr has submitted this change and it was merged. ( 
https://gerrit.osmocom.org/10887 )

Change subject: logging vty: write: check logging levels validity
......................................................................

logging vty: write: check logging levels validity

Change-Id: If683b1272ad2d5b402b91c52c496aa7975bc6315
---
M include/osmocom/core/logging_internal.h
M src/logging.c
M src/vty/logging_vty.c
3 files changed, 25 insertions(+), 8 deletions(-)

Approvals:
  Neels Hofmeyr: Looks good to me, approved
  Jenkins Builder: Verified



diff --git a/include/osmocom/core/logging_internal.h 
b/include/osmocom/core/logging_internal.h
index 55b1bbd..a510f83 100644
--- a/include/osmocom/core/logging_internal.h
+++ b/include/osmocom/core/logging_internal.h
@@ -8,6 +8,7 @@

 extern void *tall_log_ctx;
 extern const struct log_info *osmo_log_info;
+extern const struct value_string loglevel_strs[];

 void assert_loginfo(const char *src);

diff --git a/src/logging.c b/src/logging.c
index 67470a5..e7cc472 100644
--- a/src/logging.c
+++ b/src/logging.c
@@ -63,7 +63,7 @@
 void *tall_log_ctx = NULL;
 LLIST_HEAD(osmo_log_target_list);

-static const struct value_string loglevel_strs[] = {
+const struct value_string loglevel_strs[] = {
        { LOGL_DEBUG,   "DEBUG" },
        { LOGL_INFO,    "INFO" },
        { LOGL_NOTICE,  "NOTICE" },
diff --git a/src/vty/logging_vty.c b/src/vty/logging_vty.c
index 6758dd2..c8e8520 100644
--- a/src/vty/logging_vty.c
+++ b/src/vty/logging_vty.c
@@ -861,21 +861,37 @@
                get_value_string(logging_print_file_args, tgt->print_filename2),
                VTY_NEWLINE);

-       /* stupid old osmo logging API uses uppercase strings... */
-       if (tgt->loglevel)
-               vty_out(vty, "  logging level all %s%s", 
osmo_str_tolower(log_level_str(tgt->loglevel)),
-                       VTY_NEWLINE);
+       if (tgt->loglevel) {
+               const char *level_str = get_value_string_or_null(loglevel_strs, 
tgt->loglevel);
+               level_str = osmo_str_tolower(level_str);
+               if (!level_str)
+                       vty_out(vty, "%% Invalid log level %u for 'all'%s", 
tgt->loglevel, VTY_NEWLINE);
+               else
+                       vty_out(vty, "  logging level all %s%s", level_str, 
VTY_NEWLINE);
+       }

        for (i = 0; i < osmo_log_info->num_cat; i++) {
                const struct log_category *cat = &tgt->categories[i];
+               const char *cat_name;
+               const char *level_str;

                /* skip empty entries in the array */
                if (!osmo_log_info->cat[i].name)
                        continue;

-               /* stupid old osmo logging API uses uppercase strings... */
-               vty_out(vty, "  logging level %s", 
osmo_str_tolower(osmo_log_info->cat[i].name+1));
-               vty_out(vty, " %s%s", 
osmo_str_tolower(log_level_str(cat->loglevel)), VTY_NEWLINE);
+               /* Note: cat_name references the static buffer returned by 
osmo_str_tolower(), will
+                * become invalid after next osmo_str_tolower() invocation. */
+               cat_name = osmo_str_tolower(osmo_log_info->cat[i].name+1);
+
+               level_str = get_value_string_or_null(loglevel_strs, 
cat->loglevel);
+               if (!level_str) {
+                       vty_out(vty, "%% Invalid log level %u for %s%s", 
cat->loglevel, cat_name,
+                               VTY_NEWLINE);
+                       continue;
+               }
+
+               vty_out(vty, "  logging level %s", cat_name);
+               vty_out(vty, " %s%s", osmo_str_tolower(level_str), VTY_NEWLINE);
        }

        return 1;

--
To view, visit https://gerrit.osmocom.org/10887
To unsubscribe, or for help writing mail filters, visit 
https://gerrit.osmocom.org/settings

Gerrit-Project: libosmocore
Gerrit-Branch: master
Gerrit-MessageType: merged
Gerrit-Change-Id: If683b1272ad2d5b402b91c52c496aa7975bc6315
Gerrit-Change-Number: 10887
Gerrit-PatchSet: 3
Gerrit-Owner: Neels Hofmeyr <nhofm...@sysmocom.de>
Gerrit-Reviewer: Harald Welte <lafo...@gnumonks.org>
Gerrit-Reviewer: Jenkins Builder (1000002)
Gerrit-Reviewer: Neels Hofmeyr <nhofm...@sysmocom.de>

Reply via email to