iptables: fix regression with unintended free in need_protomatch
[project/firewall3.git] / xtables-10.h
index edd3d3a73b24f68ba58cedc111ecef8d248e31fc..6a2275d276ab62060363d9c6cf566bb4719dc4e6 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * firewall3 - 3rd OpenWrt UCI firewall implementation
  *
- *   Copyright (C) 2013 Jo-Philipp Wich <jow@openwrt.org>
+ *   Copyright (C) 2013 Jo-Philipp Wich <jo@mein.io>
  *
  * Permission to use, copy, modify, and/or distribute this software for any
  * purpose with or without fee is hereby granted, provided that the above
@@ -45,10 +45,8 @@ fw3_xt_get_match_name(struct xtables_match *m)
 static inline void
 fw3_xt_set_match_name(struct xtables_match *m)
 {
-    if (m->real_name)
-        strcpy(m->m->u.user.name, m->real_name);
-    else
-        strcpy(m->m->u.user.name, m->name);
+    snprintf(m->m->u.user.name, sizeof(m->m->u.user.name), "%s",
+             m->real_name ? m->real_name : m->name);
 }
 
 static inline bool
@@ -92,10 +90,8 @@ fw3_xt_get_target_name(struct xtables_target *t)
 static inline void
 fw3_xt_set_target_name(struct xtables_target *t, const char *name)
 {
-    if (t->real_name)
-        strcpy(t->t->u.user.name, t->real_name);
-    else
-        strcpy(t->t->u.user.name, name);
+    snprintf(t->t->u.user.name, sizeof(t->t->u.user.name), "%s",
+             t->real_name ? t->real_name : name);
 }
 
 static inline bool
@@ -126,7 +122,7 @@ fw3_xt_merge_target_options(struct xtables_globals *g, struct xtables_target *t)
 }
 
 static inline void
-fw3_xt_print_matches(void *ip, struct xtables_match **matches)
+fw3_xt_print_matches(void *ip, struct xtables_rule_match *matches)
 {
        struct xtables_rule_match *rm;
        struct xtables_match *m;