---
 tools/iptables-test.c |   28 +++++++++++++++++-----------
 1 files changed, 17 insertions(+), 11 deletions(-)

diff --git a/tools/iptables-test.c b/tools/iptables-test.c
index 606b748..bb87314 100644
--- a/tools/iptables-test.c
+++ b/tools/iptables-test.c
@@ -1289,6 +1289,23 @@ static struct xtables_target *prepare_target(struct 
connman_iptables *table,
                        xt_t->init(xt_t->t);
        }
 
+       if (xt_t == NULL)
+               return NULL;
+
+       connman_iptables_globals.opts =
+               xtables_merge_options(
+#if XTABLES_VERSION_CODE > 5
+                               connman_iptables_globals.orig_opts,
+#endif
+                               connman_iptables_globals.opts,
+                               xt_t->extra_opts,
+                               &xt_t->option_offset);
+
+       if (connman_iptables_globals.opts == NULL) {
+               g_free(xt_t->t);
+               xt_t = NULL;
+       }
+
        return xt_t;
 }
 
@@ -1530,17 +1547,6 @@ int main(int argc, char *argv[])
                if (xt_t == NULL)
                        goto out;
 
-               connman_iptables_globals.opts =
-                       xtables_merge_options(
-#if XTABLES_VERSION_CODE > 5
-                                       connman_iptables_globals.orig_opts,
-#endif
-                                       connman_iptables_globals.opts,
-                                       xt_t->extra_opts,
-                                       &xt_t->option_offset);
-               if (connman_iptables_globals.opts == NULL)
-                       goto out;
-
                if (delete_rule == TRUE) {
                        printf("Deleting %s to %s (match %s)\n", target_name,
                                        chain, match_name);
-- 
1.7.7

_______________________________________________
connman mailing list
[email protected]
http://lists.connman.net/listinfo/connman

Reply via email to