summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNeels Hofmeyr <nhofmeyr@sysmocom.de>2016-12-12 14:18:54 +0100
committerNeels Hofmeyr <nhofmeyr@sysmocom.de>2016-12-12 15:48:08 +0100
commitca13574ba4eeb2c9e3ad865a570e6b5d3f05a3b6 (patch)
tree3dbbe07fb7e59f2b616193176f574714030aa532
parenta280b82f8ea9ef5fc1aa6e2357d27d9d91219173 (diff)
fix logging: also catch first out-of-bounds logging cat
In map_subsys(), fix the '>' condition to '>=' for array bounds checking. Also make the bounds checking more strict: after both invocations of subsys_lib2index(), re-check validity of the array index. If the final index is still wrong, which should never happen, exit by assertion. Change-Id: I7ca1a1d47724e40350f1c4dfebe90bad01c965f9
-rw-r--r--src/logging.c4
-rw-r--r--tests/logging/logging_test.err1
2 files changed, 4 insertions, 1 deletions
diff --git a/src/logging.c b/src/logging.c
index 71025432..2a8bfdc8 100644
--- a/src/logging.c
+++ b/src/logging.c
@@ -339,9 +339,11 @@ static inline int map_subsys(int subsys)
if (subsys < 0)
subsys = subsys_lib2index(subsys);
- if (subsys > osmo_log_info->num_cat)
+ if (subsys < 0 || subsys >= osmo_log_info->num_cat)
subsys = subsys_lib2index(DLGLOBAL);
+ OSMO_ASSERT(!(subsys < 0 || subsys >= osmo_log_info->num_cat));
+
return subsys;
}
diff --git a/tests/logging/logging_test.err b/tests/logging/logging_test.err
index cc21b32d..273a852b 100644
--- a/tests/logging/logging_test.err
+++ b/tests/logging/logging_test.err
@@ -3,3 +3,4 @@ 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)
+DLGLOBAL You should see this on DLGLOBAL (c)