From 886d6fdec605e47ec19a3e37dd9596c525178a54 Mon Sep 17 00:00:00 2001 From: Neels Hofmeyr Date: Mon, 12 Dec 2016 13:49:03 +0100 Subject: fix logging: log_set_category_filter() for internal DL* logging cats In log_set_category_filter(), passing a negative index lead to memory corruption. Particularly dangerous since the internal logging categories have negative values. Fix: apply map_subsys() to interpret negative values as internal logging categories. As a side effect, out-of-bounds logging categories will be mapped to DLGLOBAL instead of being dropped. Fix the expectations in logging_test to match the fixed bug. While at it also guard against a NULL logging target. Change-Id: Ib0725b22bc39498c6b3970a61eb3339cf56d19f1 --- src/logging.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'src/logging.c') diff --git a/src/logging.c b/src/logging.c index d32ca43a..b0bca549 100644 --- a/src/logging.c +++ b/src/logging.c @@ -577,8 +577,9 @@ void log_set_log_level(struct log_target *target, int log_level) void log_set_category_filter(struct log_target *target, int category, int enable, int level) { - if (category >= osmo_log_info->num_cat) + if (!target) return; + category = map_subsys(category); target->categories[category].enabled = !!enable; target->categories[category].loglevel = level; } -- cgit v1.2.3