diff options
author | Neels Hofmeyr <nhofmeyr@sysmocom.de> | 2016-12-12 15:13:56 +0100 |
---|---|---|
committer | Neels Hofmeyr <nhofmeyr@sysmocom.de> | 2016-12-12 15:47:37 +0100 |
commit | 42240de04ce95e458b7b05cfa8357dae40e90b35 (patch) | |
tree | 7da7bf4ef72fe46d4994c30d4d02bf7e019e1f08 | |
parent | 85b42c46184118db2aaa50e44e97966523dd0269 (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.c | 9 | ||||
-rw-r--r-- | tests/logging/logging_test.err | 2 |
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) |