In the function fw3_load_rules(), warm_elem() used a pointer to an UCI section which was not valid anymore.
Signed-off-by: Pierre Lebleu <pme.leb...@gmail.com> --- rules.c | 31 ++++++++++++++++--------------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/rules.c b/rules.c index 8f232d3..a1b154d 100644 --- a/rules.c +++ b/rules.c @@ -159,41 +159,41 @@ fw3_load_rules(struct fw3_state *state, struct uci_package *p, if (rule->src.invert || rule->dest.invert) { - warn_elem(e, "must not have inverted 'src' or 'dest' options"); + warn("%s must not have inverted 'src' or 'dest' options", rule->name); fw3_free_rule(rule); continue; } else if (rule->src.set && !rule->src.any && !(rule->_src = fw3_lookup_zone(state, rule->src.name))) { - warn_elem(e, "refers to not existing zone '%s'", rule->src.name); + warn("%s refers to not existing zone '%s'", rule->name, rule->src.name); fw3_free_rule(rule); continue; } else if (rule->dest.set && !rule->dest.any && !(rule->_dest = fw3_lookup_zone(state, rule->dest.name))) { - warn_elem(e, "refers to not existing zone '%s'", rule->dest.name); + warn("%s refers to not existing zone '%s'", rule->name, rule->dest.name); fw3_free_rule(rule); continue; } else if (rule->ipset.set && state->disable_ipsets) { - warn_elem(e, "skipped due to disabled ipset support"); + warn("%s skipped due to disabled ipset support", rule->name); fw3_free_rule(rule); continue; } else if (rule->ipset.set && !(rule->ipset.ptr = fw3_lookup_ipset(state, rule->ipset.name))) { - warn_elem(e, "refers to unknown ipset '%s'", rule->ipset.name); + warn("%s refers to unknown ipset '%s'", rule->name, rule->ipset.name); fw3_free_rule(rule); continue; } if (!rule->_src && rule->target == FW3_FLAG_NOTRACK) { - warn_elem(e, "is set to target NOTRACK but has no source assigned"); + warn("%s is set to target NOTRACK but has no source assigned", rule->name); fw3_free_rule(rule); continue; } @@ -201,46 +201,47 @@ fw3_load_rules(struct fw3_state *state, struct uci_package *p, if (!rule->set_mark.set && !rule->set_xmark.set && rule->target == FW3_FLAG_MARK) { - warn_elem(e, "is set to target MARK but specifies neither " - "'set_mark' nor 'set_xmark' option"); + warn("%s is set to target MARK but specifies neither " + "'set_mark' nor 'set_xmark' option", rule->name); fw3_free_rule(rule); continue; } if (rule->_dest && rule->target == FW3_FLAG_MARK) { - warn_elem(e, "must not specify 'dest' for MARK target"); + warn("%s must not specify 'dest' for MARK target", rule->name); fw3_free_rule(rule); continue; } if (rule->set_mark.invert || rule->set_xmark.invert) { - warn_elem(e, "must not have inverted 'set_mark' or 'set_xmark'"); + warn("%s must not have inverted 'set_mark' or 'set_xmark'", rule->name); fw3_free_rule(rule); continue; } if (!rule->_src && !rule->_dest && !rule->src.any && !rule->dest.any) { - warn_elem(e, "has neither a source nor a destination zone assigned " - "- assuming an output rule"); + warn("%s has neither a source nor a destination zone assigned " + "- assuming an output rule", rule->name); } if (list_empty(&rule->proto)) { - warn_elem(e, "does not specify a protocol, assuming TCP+UDP"); + warn("%s does not specify a protocol, assuming TCP+UDP", rule->name); fw3_parse_protocol(&rule->proto, "tcpudp", true); } if (rule->target == FW3_FLAG_UNSPEC) { - warn_elem(e, "has no target specified, defaulting to REJECT"); + warn("%s has no target specified, defaulting to REJECT", rule->name); rule->target = FW3_FLAG_REJECT; } else if (rule->target > FW3_FLAG_MARK) { - warn_elem(e, "has invalid target specified, defaulting to REJECT"); + warn("%s has invalid target specified, defaulting to REJECT", + rule->name); rule->target = FW3_FLAG_REJECT; } -- 1.7.9.5 _______________________________________________ Lede-dev mailing list Lede-dev@lists.infradead.org http://lists.infradead.org/mailman/listinfo/lede-dev