From f9f3405cdad70aa21990e123e7875a59dbc59ea6 Mon Sep 17 00:00:00 2001 From: gandalf Date: Mon, 5 May 2003 19:33:40 +0000 Subject: Fix the previous fix No more segfaults or compilewarnings. --- include/libiptc/libip6tc.h | 3 +++ ip6tables.c | 8 +------- iptables.c | 8 +------- 3 files changed, 5 insertions(+), 14 deletions(-) diff --git a/include/libiptc/libip6tc.h b/include/libiptc/libip6tc.h index 2904db5..7a247c4 100644 --- a/include/libiptc/libip6tc.h +++ b/include/libiptc/libip6tc.h @@ -26,6 +26,9 @@ int ip6tc_is_chain(const char *chain, const ip6tc_handle_t handle); /* Take a snapshot of the rules. Returns NULL on error. */ ip6tc_handle_t ip6tc_init(const char *tablename); +/* Cleanup after ip6tc_init(). */ +void ip6tc_free(ip6tc_handle_t *h); + /* Iterator functions to run through the chains. Returns NULL at end. */ const char *ip6tc_first_chain(ip6tc_handle_t *handle); const char *ip6tc_next_chain(ip6tc_handle_t *handle); diff --git a/ip6tables.c b/ip6tables.c index d250882..17bdb4e 100644 --- a/ip6tables.c +++ b/ip6tables.c @@ -1670,7 +1670,6 @@ int do_command6(int argc, char *argv[], char **table, ip6tc_handle_t *handle) const char *modprobe = NULL; int proto_used = 0; char icmp6p[] = "icmpv6"; - int no_handle = 0; memset(&fw, 0, sizeof(fw)); @@ -2148,10 +2147,8 @@ int do_command6(int argc, char *argv[], char **table, ip6tc_handle_t *handle) chain, IP6T_FUNCTION_MAXNAMELEN); /* only allocate handle if we weren't called with a handle */ - if (!*handle) { + if (!*handle) *handle = ip6tc_init(*table); - no_handle = 1; - } if (!*handle) { /* try to insmod the module if iptc_init failed */ @@ -2296,8 +2293,5 @@ int do_command6(int argc, char *argv[], char **table, ip6tc_handle_t *handle) if (verbose > 1) dump_entries6(*handle); - if (no_handle) - ip6tc_free(handle); - return ret; } diff --git a/iptables.c b/iptables.c index b2de559..67d30c9 100644 --- a/iptables.c +++ b/iptables.c @@ -1668,7 +1668,6 @@ int do_command(int argc, char *argv[], char **table, iptc_handle_t *handle) char *protocol = NULL; const char *modprobe = NULL; int proto_used = 0; - int no_handle = 0; memset(&fw, 0, sizeof(fw)); @@ -2149,10 +2148,8 @@ int do_command(int argc, char *argv[], char **table, iptc_handle_t *handle) chain, IPT_FUNCTION_MAXNAMELEN); /* only allocate handle if we weren't called with a handle */ - if (!*handle) { + if (!*handle) *handle = iptc_init(*table); - no_handle = 1; - } if (!*handle) { /* try to insmod the module if iptc_init failed */ @@ -2297,8 +2294,5 @@ int do_command(int argc, char *argv[], char **table, iptc_handle_t *handle) if (verbose > 1) dump_entries(*handle); - if (no_handle) - iptc_free(handle); - return ret; } -- cgit v1.2.3