From: Alan T. DeKok Date: Tue, 25 Jul 2017 15:55:48 +0000 (-0400) Subject: better fix for parsing log{} sections X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=dadcab51357f9acca3365d0b392de41cbffe4ee2;p=thirdparty%2Ffreeradius-server.git better fix for parsing log{} sections --- diff --git a/src/main/cf_parse.c b/src/main/cf_parse.c index 97bc67d3d40..6e76665fe29 100644 --- a/src/main/cf_parse.c +++ b/src/main/cf_parse.c @@ -1357,6 +1357,24 @@ int _cf_section_rule_push(CONF_SECTION *cs, CONF_PARSER const *rule, char const return 0; } + /* + * If we have a duplicate sub-section, just + * recurse and add the new sub-rules to the + * existing sub-section. + */ + if (rule->type == FR_TYPE_SUBSECTION) { + CONF_SECTION *subcs; + + subcs = cf_section_find(cs, rule->name, rule->ident2); + if (!subcs) { + cf_log_err(cs, "Failed finding '%s' subsection", rule->name); + cf_debug(cs); + return -1; + } + + return cf_section_rules_push(subcs, rule->subcs); + } + cf_log_err(cs, "Data of type %s with name \"%s\" already exists. Existing data added %s[%i]", "CONF_PARSER", rule->name, cd->item.filename, cd->item.lineno);