summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJan Engelhardt <jengelh@medozas.de>2011-02-11 01:45:26 +0100
committerJan Engelhardt <jengelh@medozas.de>2011-02-11 01:46:45 +0100
commitaf3d73ec867debb5e38c6c6fde66f05093714fec (patch)
tree1f63a5a8b0e07e6f881dbb350df3ffff03a081b7
parent7ada0bb7aafd94ef7c9c076e8be50c80bc549a4f (diff)
iptables: fix segfault target option parsing
With v1.4.10-58-g94e247b, target option parsing started to happen in the wrong case. Signed-off-by: Jan Engelhardt <jengelh@medozas.de>
-rw-r--r--ip6tables.c6
-rw-r--r--iptables.c6
2 files changed, 6 insertions, 6 deletions
diff --git a/ip6tables.c b/ip6tables.c
index 5561a7d5..9f0b8926 100644
--- a/ip6tables.c
+++ b/ip6tables.c
@@ -1245,9 +1245,9 @@ static void command_default(struct iptables_command_state *cs)
struct xtables_rule_match *matchp;
struct xtables_match *m;
- if (cs->target == NULL || cs->target->parse == NULL ||
- cs->c < cs->target->option_offset ||
- cs->c >= cs->target->option_offset + XT_OPTION_OFFSET_SCALE) {
+ if (cs->target != NULL && cs->target->parse != NULL &&
+ cs->c >= cs->target->option_offset &&
+ cs->c < cs->target->option_offset + XT_OPTION_OFFSET_SCALE) {
cs->target->parse(cs->c - cs->target->option_offset, cs->argv,
cs->invert, &cs->target->tflags, &cs->fw6,
&cs->target->t);
diff --git a/iptables.c b/iptables.c
index 33fd8822..a73df3ea 100644
--- a/iptables.c
+++ b/iptables.c
@@ -1269,9 +1269,9 @@ static void command_default(struct iptables_command_state *cs)
struct xtables_rule_match *matchp;
struct xtables_match *m;
- if (cs->target == NULL || cs->target->parse == NULL ||
- cs->c < cs->target->option_offset ||
- cs->c >= cs->target->option_offset + XT_OPTION_OFFSET_SCALE) {
+ if (cs->target != NULL && cs->target->parse != NULL &&
+ cs->c >= cs->target->option_offset &&
+ cs->c < cs->target->option_offset + XT_OPTION_OFFSET_SCALE) {
cs->target->parse(cs->c - cs->target->option_offset, cs->argv,
cs->invert, &cs->target->tflags, &cs->fw,
&cs->target->t);