]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
better fix for parsing log{} sections
authorAlan T. DeKok <aland@freeradius.org>
Tue, 25 Jul 2017 15:55:48 +0000 (11:55 -0400)
committerAlan T. DeKok <aland@freeradius.org>
Tue, 25 Jul 2017 15:55:48 +0000 (11:55 -0400)
src/main/cf_parse.c

index 97bc67d3d4012a25e80a16adbeb27588be6eccfe..6e76665fe298356d2c254a0b166d2d1f167d26ad 100644 (file)
@@ -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);