nft: fix leaks in nft_xtables_config_load

Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
diff --git a/iptables/nft.c b/iptables/nft.c
index 1c7c75e..a67f875 100644
--- a/iptables/nft.c
+++ b/iptables/nft.c
@@ -2816,6 +2816,8 @@
 					"table `%s' cannot be create, reason `%s'. Exitting\n",
 					(char *)nft_table_attr_get(table, NFT_TABLE_ATTR_NAME),
 					strerror(errno));
+				nft_table_list_iter_destroy(titer);
+				nft_table_list_free(table_list);
 				return -1;
 			}
 			continue;
@@ -2823,6 +2825,8 @@
 		xtables_config_perror(flags, "table `%s' has been created\n",
 			(char *)nft_table_attr_get(table, NFT_TABLE_ATTR_NAME));
 	}
+	nft_table_list_iter_destroy(titer);
+	nft_table_list_free(table_list);
 
 	/* Stage 2) create chains */
 	citer = nft_chain_list_iter_create(chain_list);
@@ -2838,6 +2842,8 @@
 					"chain `%s' cannot be create, reason `%s'. Exitting\n",
 					(char *)nft_chain_attr_get(chain, NFT_CHAIN_ATTR_NAME),
 					strerror(errno));
+				nft_chain_list_iter_destroy(citer);
+				nft_chain_list_free(chain_list);
 				return -1;
 			}
 			continue;
@@ -2848,5 +2854,8 @@
 			(char *)nft_chain_attr_get(chain, NFT_CHAIN_ATTR_NAME),
 			(char *)nft_chain_attr_get(chain, NFT_CHAIN_ATTR_TABLE));
 	}
+	nft_chain_list_iter_destroy(citer);
+	nft_chain_list_free(chain_list);
+
 	return 0;
 }