From ca13574ba4eeb2c9e3ad865a570e6b5d3f05a3b6 Mon Sep 17 00:00:00 2001 From: Neels Hofmeyr Date: Mon, 12 Dec 2016 14:18:54 +0100 Subject: 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 --- src/logging.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'src/logging.c') 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; } -- cgit v1.2.3