aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNeels Hofmeyr <nhofmeyr@sysmocom.de>2016-12-12 15:13:56 +0100
committerNeels Hofmeyr <nhofmeyr@sysmocom.de>2016-12-12 15:47:37 +0100
commit42240de04ce95e458b7b05cfa8357dae40e90b35 (patch)
tree7da7bf4ef72fe46d4994c30d4d02bf7e019e1f08
parent85b42c46184118db2aaa50e44e97966523dd0269 (diff)
fix logging: redirection to DLGLOBAL for invalid categories
For out-of-bounds logging categories, redirect to the proper DLGLOBAL array index instead of returning -1. Adjust test expectation which shows that the bugs tested for are fixed. Note: there are separate bounds checking problems, left for another patch. Change-Id: I6ea9a59e005a22e0305454291714fdb9531c346b
-rw-r--r--src/logging.c9
-rw-r--r--tests/logging/logging_test.err2
2 files changed, 10 insertions, 1 deletions
diff --git a/src/logging.c b/src/logging.c
index 92852c9c..71025432 100644
--- a/src/logging.c
+++ b/src/logging.c
@@ -328,13 +328,20 @@ err:
target->output(target, level, buf);
}
+/* Catch internal logging category indexes as well as out-of-bounds indexes.
+ * For internal categories, the ID is negative starting with -1; and internal
+ * logging categories are added behind the user categories. For out-of-bounds
+ * indexes, return the index of DLGLOBAL. The returned category index is
+ * guaranteed to exist in osmo_log_info, otherwise the program would abort,
+ * which should never happen unless even the DLGLOBAL category is missing. */
static inline int map_subsys(int subsys)
{
if (subsys < 0)
subsys = subsys_lib2index(subsys);
if (subsys > osmo_log_info->num_cat)
- subsys = DLGLOBAL;
+ subsys = subsys_lib2index(DLGLOBAL);
+
return subsys;
}
diff --git a/tests/logging/logging_test.err b/tests/logging/logging_test.err
index 4a350fa9..cc21b32d 100644
--- a/tests/logging/logging_test.err
+++ b/tests/logging/logging_test.err
@@ -1,3 +1,5 @@
DRLL You should see this
DCC You should see this
DRLL You should see this
+DLGLOBAL You should see this on DLGLOBAL (a)
+DLGLOBAL You should see this on DLGLOBAL (b)