diff options
author | Neels Hofmeyr <nhofmeyr@sysmocom.de> | 2016-12-12 14:18:54 +0100 |
---|---|---|
committer | Neels Hofmeyr <nhofmeyr@sysmocom.de> | 2016-12-12 15:48:08 +0100 |
commit | ca13574ba4eeb2c9e3ad865a570e6b5d3f05a3b6 (patch) | |
tree | 3dbbe07fb7e59f2b616193176f574714030aa532 | |
parent | a280b82f8ea9ef5fc1aa6e2357d27d9d91219173 (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.c | 4 | ||||
-rw-r--r-- | tests/logging/logging_test.err | 1 |
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) |