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

Reply via email to