Fix for -j match coredumping reported by Erik Tews <erik.tews@gmx.net>.
diff --git a/iptables.c b/iptables.c
index a6e16ae..cf6b04c 100644
--- a/iptables.c
+++ b/iptables.c
@@ -1430,7 +1430,7 @@
size = sizeof(struct ipt_entry);
for (m = matches; m; m = m->next)
- size += m->m->match_size;
+ size += m->m ? m->m->match_size : 0;
e = fw_malloc(size + target->target_size);
*e = *fw;
@@ -1439,8 +1439,10 @@
size = 0;
for (m = matches; m; m = m->next) {
- memcpy(e->elems + size, m->m, m->m->match_size);
- size += m->m->match_size;
+ if (m->m) {
+ memcpy(e->elems + size, m->m, m->m->match_size);
+ size += m->m->match_size;
+ }
}
memcpy(e->elems + size, target, target->target_size);