diff options
author | laforge <laforge> | 2001-10-21 14:11:54 +0000 |
---|---|---|
committer | laforge <laforge> | 2001-10-21 14:11:54 +0000 |
commit | 130b58b07439bd5b915dec2b84414064a1263fd7 (patch) | |
tree | 3f0b15dc595fa65c7578eae821b225b8a49a0375 | |
parent | cc9b061e7ccb9e568b3fad6c6c578c75ce9f0cfb (diff) |
fix stupid bug introduced with too-lazy "-t" checking.
-rw-r--r-- | ip6tables-restore.c | 24 | ||||
-rw-r--r-- | iptables-restore.c | 28 |
2 files changed, 19 insertions, 33 deletions
diff --git a/ip6tables-restore.c b/ip6tables-restore.c index d0c778a..415f1e4 100644 --- a/ip6tables-restore.c +++ b/ip6tables-restore.c @@ -293,22 +293,6 @@ int main(int argc, char *argv[]) /* start command parsing at start of line */ parsestart = buffer; } - - /* prevent iptables-restore from crashing in do_command - * when someone passes a "-t" on the line. - * - Ben Reser <ben@reser.org> */ - if (strstr(buffer, "-t")) { - exit_error(PARAMETER_PROBLEM, - "Line %u seems to have a " - " -t table option.\n", line); - exit(1); - } - if (!strlen((char *) &curtable)) { - exit_error(PARAMETER_PROBLEM, - "Line %u seems to to have a " - " zero-length table name.\n", line); - exit(1); - } add_argv(argv[0]); add_argv("-t"); @@ -358,6 +342,14 @@ int main(int argc, char *argv[]) strncpy(param_buffer, param_start, param_len); *(param_buffer+param_len) = '\0'; + + if (!strncmp(param_buffer, "-t", 3)) { + exit_error(PARAMETER_PROBLEM, + "Line %u seems to have a " + "-t table option.\n", line); + exit(1); + } + add_argv(param_buffer); param_start += param_len + 1; } else { diff --git a/iptables-restore.c b/iptables-restore.c index a6e818e..2a18a09 100644 --- a/iptables-restore.c +++ b/iptables-restore.c @@ -4,7 +4,7 @@ * * This coude is distributed under the terms of GNU GPL * - * $Id: iptables-restore.c,v 1.15 2001/10/16 07:53:34 laforge Exp $ + * $Id: iptables-restore.c,v 1.16 2001/10/16 09:51:33 laforge Exp $ */ #include <getopt.h> @@ -81,6 +81,7 @@ static int newargc; /* function adding one argument to newargv, updating newargc * returns true if argument added, false otherwise */ static int add_argv(char *what) { + DEBUGP("add_argv: %s\n", what); if (what && ((newargc + 1) < sizeof(newargv)/sizeof(char *))) { newargv[newargc] = strdup(what); newargc++; @@ -289,22 +290,6 @@ int main(int argc, char *argv[]) parsestart = buffer; } - /* prevent iptables-restore from crashing in do_command - * when someone passes a "-t" on the line. - * - Ben Reser <ben@reser.org> */ - if (strstr(buffer, "-t")) { - exit_error(PARAMETER_PROBLEM, - "Line %u seems to have a " - " -t table option.\n", line); - exit(1); - } - if (!strlen((char *) &curtable)) { - exit_error(PARAMETER_PROBLEM, - "Line %u seems to to have a " - " zero-length table name.\n", line); - exit(1); - } - add_argv(argv[0]); add_argv("-t"); add_argv((char *) &curtable); @@ -351,6 +336,15 @@ int main(int argc, char *argv[]) strncpy(param_buffer, param_start, param_len); *(param_buffer+param_len) = '\0'; + + /* check if table name specified */ + if (!strncmp(param_buffer, "-t", 3)) { + exit_error(PARAMETER_PROBLEM, + "Line %u seems to have a " + "-t table option.\n", line); + exit(1); + } + add_argv(param_buffer); param_start += param_len + 1; } else { |