From aca63e532bb99bd9d1df462d82a26ff3f2c9aca7 Mon Sep 17 00:00:00 2001 From: Timo Sirainen Date: Fri, 31 Aug 2018 13:04:53 +0300 Subject: [PATCH] lib: Fix matching parent categories in event filter So far this hasn't caused problems, because parent events had been using parent categories. However, if the parent category wasn't used by an event or its parents, an event filter wouldn't have matched it. --- src/lib/event-filter.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/lib/event-filter.c b/src/lib/event-filter.c index 37aa3465b8..b98692a60f 100644 --- a/src/lib/event-filter.c +++ b/src/lib/event-filter.c @@ -400,6 +400,17 @@ bool event_filter_import_unescaped(struct event_filter *filter, return TRUE; } +static bool +event_category_match(const struct event_category *category, + const struct event_category *wanted_category) +{ + for (; category != NULL; category = category->parent) { + if (category == wanted_category) + return TRUE; + } + return FALSE; +} + static bool event_has_category(struct event *event, struct event_category *wanted_category) { @@ -410,7 +421,7 @@ event_has_category(struct event *event, struct event_category *wanted_category) while (event != NULL) { if (array_is_created(&event->categories)) { array_foreach(&event->categories, catp) { - if (*catp == wanted_category) + if (event_category_match(*catp, wanted_category)) return TRUE; } } -- 2.47.3