diff options
author | Jan Engelhardt <jengelh@medozas.de> | 2011-02-11 01:45:26 +0100 |
---|---|---|
committer | Jan Engelhardt <jengelh@medozas.de> | 2011-02-11 01:46:45 +0100 |
commit | af3d73ec867debb5e38c6c6fde66f05093714fec (patch) | |
tree | 1f63a5a8b0e07e6f881dbb350df3ffff03a081b7 | |
parent | 7ada0bb7aafd94ef7c9c076e8be50c80bc549a4f (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.c | 6 | ||||
-rw-r--r-- | iptables.c | 6 |
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); @@ -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); |