summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorlaforge <laforge>2001-10-21 14:11:54 +0000
committerlaforge <laforge>2001-10-21 14:11:54 +0000
commit130b58b07439bd5b915dec2b84414064a1263fd7 (patch)
tree3f0b15dc595fa65c7578eae821b225b8a49a0375
parentcc9b061e7ccb9e568b3fad6c6c578c75ce9f0cfb (diff)
fix stupid bug introduced with too-lazy "-t" checking.
-rw-r--r--ip6tables-restore.c24
-rw-r--r--iptables-restore.c28
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 {