summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorgandalf <gandalf>2003-05-05 19:33:40 +0000
committergandalf <gandalf>2003-05-05 19:33:40 +0000
commitf9f3405cdad70aa21990e123e7875a59dbc59ea6 (patch)
tree84dfa4f27819d743b20800292b24ce8dde3c7b69
parent3e1fd82ac5877049bed0b4d28b3134e73c36a729 (diff)
Fix the previous fix
No more segfaults or compilewarnings.
-rw-r--r--include/libiptc/libip6tc.h3
-rw-r--r--ip6tables.c8
-rw-r--r--iptables.c8
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;
}