From 456c70d194263ad81bd68e83ce715c04cbcca679 Mon Sep 17 00:00:00 2001 From: Jason Ish Date: Thu, 7 Sep 2023 11:53:55 -0600 Subject: [PATCH] conf: fix include handling from arrays Includes from an "include" array were being loaded into the wrong parent as the logic for array handing in include context was not updated. If we are descending into an array in include context, pass through the current parent so the included configuration is included where it is expected. Bug: #6300 --- src/conf-yaml-loader.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/conf-yaml-loader.c b/src/conf-yaml-loader.c index 9312a189e8a4..1bd107e0c1c9 100644 --- a/src/conf-yaml-loader.c +++ b/src/conf-yaml-loader.c @@ -374,8 +374,9 @@ static int ConfYamlParse(yaml_parser_t *parser, ConfNode *parent, int inseq, int } else if (event.type == YAML_SEQUENCE_START_EVENT) { SCLogDebug("event.type=YAML_SEQUENCE_START_EVENT; state=%d", state); - if (ConfYamlParse(parser, node, 1, rlevel, state == CONF_INCLUDE ? CONF_INCLUDE : 0) != - 0) + /* If we're processing a list of includes, use the current parent. */ + if (ConfYamlParse(parser, state == CONF_INCLUDE ? parent : node, 1, rlevel, + state == CONF_INCLUDE ? CONF_INCLUDE : 0) != 0) goto fail; node->is_seq = 1; state = CONF_KEY;