summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAna Rey <anarey@gmail.com>2014-06-26 19:08:37 +0200
committerPablo Neira Ayuso <pablo@netfilter.org>2014-06-30 12:44:56 +0200
commite7d5395825b7eed5f366ef2e95d9fd1812390a6d (patch)
treef28f32f30c42fc9eb4c9c1685cfaf407bd132539
parentc39a79220f2c490cae43c6458e55e659b7d0ff39 (diff)
table: Free memory in the same function that is reserved
Free memory in the same function that is reserved. Signed-off-by: Ana Rey <anarey@gmail.com> Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
-rw-r--r--src/table.c17
1 files changed, 9 insertions, 8 deletions
diff --git a/src/table.c b/src/table.c
index b4d1663..ed6e615 100644
--- a/src/table.c
+++ b/src/table.c
@@ -328,25 +328,21 @@ int nft_jansson_parse_table(struct nft_table *t, json_t *tree,
str = nft_jansson_parse_str(root, "name", err);
if (str == NULL)
- goto err;
+ return -1;
nft_table_attr_set_str(t, NFT_TABLE_ATTR_NAME, str);
if (nft_jansson_parse_family(root, &family, err) != 0)
- goto err;
+ return -1;
nft_table_attr_set_u32(t, NFT_TABLE_ATTR_FAMILY, family);
if (nft_jansson_parse_val(root, "flags", NFT_TYPE_U32, &flags, err) < 0)
- goto err;
+ return -1;
nft_table_attr_set_u32(t, NFT_TABLE_ATTR_FLAGS, flags);
- nft_jansson_free_root(tree);
return 0;
-err:
- nft_jansson_free_root(tree);
- return -1;
}
#endif
@@ -357,12 +353,17 @@ static int nft_table_json_parse(struct nft_table *t, const void *json,
#ifdef JSON_PARSING
json_t *tree;
json_error_t error;
+ int ret;
tree = nft_jansson_create_root(json, &error, err, input);
if (tree == NULL)
return -1;
- return nft_jansson_parse_table(t, tree, err);
+ ret = nft_jansson_parse_table(t, tree, err);
+
+ nft_jansson_free_root(tree);
+
+ return ret;
#else
errno = EOPNOTSUPP;
return -1;