From 8e9ebd32fc1986b892ffb59968b90b7b97438b2b Mon Sep 17 00:00:00 2001 From: Bart De Schuymer Date: Wed, 28 Sep 2005 19:36:17 +0000 Subject: cleanup --- userspace/ebtables2/communication.c | 2 +- userspace/ebtables2/ebtables.c | 7 ++----- userspace/ebtables2/ebtablesd.c | 25 +++++++++++++++---------- userspace/ebtables2/ebtablesu.c | 3 ++- userspace/ebtables2/include/ebtables_u.h | 2 +- userspace/ebtables2/libebtc.c | 4 ++-- 6 files changed, 23 insertions(+), 20 deletions(-) diff --git a/userspace/ebtables2/communication.c b/userspace/ebtables2/communication.c index 33aa98d..f9f173b 100644 --- a/userspace/ebtables2/communication.c +++ b/userspace/ebtables2/communication.c @@ -297,7 +297,7 @@ close_file: /* Gets executed after ebt_deliver_table. Delivers the counters to the kernel * and resets the counterchanges to CNT_NORM */ -void ebt_deliver_counters(struct ebt_u_replace *u_repl, int exec_style) +void ebt_deliver_counters(struct ebt_u_replace *u_repl) { struct ebt_counter *old, *new, *newcounters; socklen_t optlen; diff --git a/userspace/ebtables2/ebtables.c b/userspace/ebtables2/ebtables.c index 05c30c4..855b4fc 100644 --- a/userspace/ebtables2/ebtables.c +++ b/userspace/ebtables2/ebtables.c @@ -1008,13 +1008,10 @@ big_iface_length: replace->flags |= OPT_COMMAND; { char *tmp = replace->filename; - int init = 1; - if (c == 10) - init = 0; /* Get the kernel table */ replace->filename = NULL; - ebt_get_kernel_table(replace, init); + ebt_get_kernel_table(replace, c == 10 ? 0 : 1); replace->filename = tmp; } break; @@ -1208,7 +1205,7 @@ delete_the_rule: ebt_deliver_table(replace); if (replace->nentries) - ebt_deliver_counters(replace, EXEC_STYLE_PRG); + ebt_deliver_counters(replace); } return 0; } diff --git a/userspace/ebtables2/ebtablesd.c b/userspace/ebtables2/ebtablesd.c index 59bbe1c..062a2d6 100644 --- a/userspace/ebtables2/ebtablesd.c +++ b/userspace/ebtables2/ebtablesd.c @@ -52,7 +52,7 @@ int main(int argc_, char *argv_[]) char *argv[EBTD_ARGC_MAX], *args[4], name[] = "mkdir", mkdir_option[] = "-p", mkdir_dir[] = EBTD_PIPE_DIR, cmdline[EBTD_CMDLINE_MAXLN]; - int readfd, base = 0, offset = 0, n = 0, ret = 0; + int readfd, base = 0, offset = 0, n = 0, ret = 0, quotemode = 0; /* Make sure the pipe directory exists */ args[0] = name; @@ -104,15 +104,16 @@ int main(int argc_, char *argv_[]) continue; ntot += offset; continue_read: - /* Change all ' ' into '\0'. This implies that the user is not - * allowed to use spaces (that don't distinguish options or - * commands) in her rules. This comes down to not allowing spaces - * in options like the string of --ulog-prefix (use '_' instead). - */ + /* Put '\0' between arguments. */ for (; offset < ntot; n++, offset++) { - if (cmdline[offset] == ' ') + if (cmdline[offset] == '\"') { + quotemode ^= 1; cmdline[offset] = '\0'; - if (cmdline[offset] == '\n') { + } else if (!quotemode && cmdline[offset] == ' ') { + cmdline[offset] = '\0'; + } else if (cmdline[offset] == '\n') { + if (quotemode) + ebt_print_error("ebtablesd: wrong number of \" delimiters"); cmdline[offset] = '\0'; break; } @@ -145,6 +146,10 @@ continue_read: n2 = 0; argc = 0; while (n2 < n && argc < EBTD_ARGC_MAX) { + if (*(cmdline + base + n2) == '\0') { + n2++; + continue; + } argv[argc++] = cmdline + base + n2; n2 += strlen(cmdline + base + n2) + 1; } @@ -303,7 +308,7 @@ continue_read: replace[i].num_counters = 0; ebt_deliver_table(&replace[i]); if (ebt_errormsg[0] == '\0' && open_method[i] == OPEN_METHOD_KERNEL) - ebt_deliver_counters(&replace[i], EXEC_STYLE_DAEMON); + ebt_deliver_counters(&replace[i]); goto write_msg; } else if (!strcmp(argv[1], "fcommit")) { if (argc != 4) { @@ -333,7 +338,7 @@ continue_read: strcpy(replace[i].filename, argv[3]); ebt_deliver_table(&replace[i]); if (ebt_errormsg[0] == '\0' && open_method[i] == OPEN_METHOD_KERNEL) - ebt_deliver_counters(&replace[i], EXEC_STYLE_DAEMON); + ebt_deliver_counters(&replace[i]); free(replace[i].filename); replace[i].filename = NULL; goto write_msg; diff --git a/userspace/ebtables2/ebtablesu.c b/userspace/ebtables2/ebtablesu.c index 1fed0c1..3cee145 100644 --- a/userspace/ebtables2/ebtablesu.c +++ b/userspace/ebtables2/ebtablesu.c @@ -76,7 +76,8 @@ int main(int argc, char *argv[]) pos = arguments; for (i = 0; i < argc; i++) { strcpy(pos, argv[i]); - pos += strlen(argv[i]) + 1; + pos += strlen(argv[i]); + *(pos++) = ' '; } *(pos-1) = '\n'; diff --git a/userspace/ebtables2/include/ebtables_u.h b/userspace/ebtables2/include/ebtables_u.h index e63cc45..b725625 100644 --- a/userspace/ebtables2/include/ebtables_u.h +++ b/userspace/ebtables2/include/ebtables_u.h @@ -276,7 +276,7 @@ void __ebt_print_error(char *format, ...); /* communication.c */ int ebt_get_table(struct ebt_u_replace *repl, int init); -void ebt_deliver_counters(struct ebt_u_replace *repl, int exec_style); +void ebt_deliver_counters(struct ebt_u_replace *repl); void ebt_deliver_table(struct ebt_u_replace *repl); /* useful_functions.c */ diff --git a/userspace/ebtables2/libebtc.c b/userspace/ebtables2/libebtc.c index 2feefe9..af95694 100644 --- a/userspace/ebtables2/libebtc.c +++ b/userspace/ebtables2/libebtc.c @@ -1272,8 +1272,8 @@ void __ebt_print_error(char *format, ...) vsnprintf(ebt_errormsg, ERRORMSG_MAXLEN, format, l); va_end(l); } else { - vprintf(format, l); - printf(".\n"); + vfprintf(stderr, format, l); + fprintf(stderr, ".\n"); va_end(l); exit (-1); } -- cgit v1.2.3