From bb41f8879f5743d683ff3e66ef440b7b7bb5f6d2 Mon Sep 17 00:00:00 2001 From: Harald Welte Date: Sun, 21 Oct 2001 14:11:54 +0000 Subject: fix stupid bug introduced with too-lazy "-t" checking. --- ip6tables-restore.c | 24 ++++++++---------------- iptables-restore.c | 28 +++++++++++----------------- 2 files changed, 19 insertions(+), 33 deletions(-) diff --git a/ip6tables-restore.c b/ip6tables-restore.c index d0c778a3..415f1e4d 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 */ - 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 a6e818e6..2a18a095 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 @@ -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 */ - 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 { -- cgit v1.2.3