]> git.ipfire.org Git - thirdparty/iptables.git/commitdiff
Fix set match/target direction parser
authorJozsef Kadlecsik <kadlec@blackhole.kfki.hu>
Sat, 9 Apr 2011 19:29:08 +0000 (21:29 +0200)
committerJozsef Kadlecsik <kadlec@blackhole.kfki.hu>
Sat, 9 Apr 2011 19:29:08 +0000 (21:29 +0200)
The direction parser did not catch when more src/dst direction
parameters were supplied than allowed.

extensions/libxt_set.h

index 6b93691165135f177163b387b4a132479f7996c1..4ac84fa9c02261402310955e14d92fc2221d3422 100644 (file)
@@ -114,7 +114,7 @@ parse_dirs_v0(const char *opt_arg, struct xt_set_info_v0 *info)
        if (tmp)
                xtables_error(PARAMETER_PROBLEM,
                              "Can't be more src/dst options than %i.", 
-                             IPSET_DIM_MAX - 1);
+                             IPSET_DIM_MAX);
 
        free(saved);
 }
@@ -124,9 +124,8 @@ parse_dirs(const char *opt_arg, struct xt_set_info *info)
 {
        char *saved = strdup(opt_arg);
        char *ptr, *tmp = saved;
-       int i = 0;
        
-       while (i < (IPSET_DIM_MAX - 1) && tmp != NULL) {
+       while (info->dim < IPSET_DIM_MAX && tmp != NULL) {
                info->dim++;
                ptr = strsep(&tmp, ",");
                if (strncmp(ptr, "src", 3) == 0)
@@ -139,7 +138,7 @@ parse_dirs(const char *opt_arg, struct xt_set_info *info)
        if (tmp)
                xtables_error(PARAMETER_PROBLEM,
                              "Can't be more src/dst options than %i.", 
-                             IPSET_DIM_MAX - 1);
+                             IPSET_DIM_MAX);
 
        free(saved);
 }