iptables: Move target options merge to prepare_target
authorTomasz Bursztyka <tomasz.bursztyka@linux.intel.com>
Thu, 27 Oct 2011 07:26:31 +0000 (10:26 +0300)
committerSamuel Ortiz <sameo@linux.intel.com>
Fri, 28 Oct 2011 19:34:27 +0000 (21:34 +0200)
src/iptables.c

index eef91c1..14da18e 100644 (file)
@@ -1299,6 +1299,20 @@ static struct xtables_target *prepare_target(struct connman_iptables *table,
                        xt_t->init(xt_t->t);
        }
 
+       iptables_globals.opts =
+               xtables_merge_options(
+#if XTABLES_VERSION_CODE > 5
+                               iptables_globals.orig_opts,
+#endif
+                               iptables_globals.opts,
+                               xt_t->extra_opts,
+                               &xt_t->option_offset);
+
+       if (iptables_globals.opts == NULL) {
+               g_free(xt_t->t);
+               xt_t = NULL;
+       }
+
        return xt_t;
 }
 
@@ -1544,17 +1558,6 @@ static int iptables_command(int argc, char *argv[])
                if (xt_t == NULL)
                        goto out;
 
-               iptables_globals.opts =
-                       xtables_merge_options(
-#if XTABLES_VERSION_CODE > 5
-                                       iptables_globals.orig_opts,
-#endif
-                                       iptables_globals.opts,
-                                       xt_t->extra_opts,
-                                       &xt_t->option_offset);
-               if (iptables_globals.opts == NULL)
-                       goto out;
-
                if (delete == TRUE) {
                        DBG("Deleting %s to %s (match %s)\n",
                                        target_name, chain, match_name);