From 1d4941dd3a40ba721927f5c16383d8bd13f28f14 Mon Sep 17 00:00:00 2001 From: Timo Sirainen Date: Sun, 5 Oct 2025 13:18:50 +0300 Subject: [PATCH] config: Fix including default @group when a similar non-default filter exists Fixes: Panic: file hash.c: line 252 (hash_table_insert_node): assertion failed: (opcode == HASH_TABLE_OP_UPDATE) --- src/config/config-parser.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/config/config-parser.c b/src/config/config-parser.c index a45415b1e6..19a684ff09 100644 --- a/src/config/config-parser.c +++ b/src/config/config-parser.c @@ -3064,12 +3064,20 @@ config_parser_include_merge(struct config_parser_context *ctx, struct config_filter_parser *dest, *new_src_filter = config_filter_parser_replace_parent(ctx->pool, src_filter, ctx->cur_section->filter_parser); + /* If parent filter now has a reverse default_settings, + use the parent with the matching default_settings. */ + struct config_filter_parser *parent_parser = + ctx->cur_section->filter_parser; + if (parent_parser->filter.default_settings != new_src_filter->filter.default_settings) { + config_parse_fill_reverse_default_siblings(ctx); + parent_parser = parent_parser->reverse_default_sibling; + } - dest = config_filters_find_child(ctx->cur_section->filter_parser, + dest = config_filters_find_child(parent_parser, &new_src_filter->filter); if (dest == NULL) { dest = config_add_new_parser(ctx, &new_src_filter->filter, - ctx->cur_section->filter_parser); + parent_parser); dest->filter_required_setting_seen = new_src_filter->filter_required_setting_seen; } -- 2.47.3