diff options
author | Pablo Neira Ayuso <pablo@netfilter.org> | 2018-10-03 16:05:32 +0200 |
---|---|---|
committer | Pablo Neira Ayuso <pablo@netfilter.org> | 2018-10-03 16:12:41 +0200 |
commit | 406d17db7e02f78d258edb38ac8571112ef8c767 (patch) | |
tree | a34faa80b7ebfb5a2f2980974f42f9cf13514d2e /src | |
parent | e08c8bbfeda80f3807ce3784558ce1fb6f0d2bc8 (diff) |
rule: fix memleak in do_get_setelems()
Release set and elements in case of error.
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Diffstat (limited to 'src')
-rw-r--r-- | src/rule.c | 8 |
1 files changed, 3 insertions, 5 deletions
@@ -2190,17 +2190,15 @@ static int do_get_setelems(struct netlink_ctx *ctx, struct cmd *cmd, /* Fetch from kernel the elements that have been requested .*/ err = netlink_get_setelem(ctx, &cmd->handle, &cmd->location, table, new_set, init); - if (err < 0) - return err; - - __do_list_set(ctx, cmd, table, new_set); + if (err >= 0) + __do_list_set(ctx, cmd, table, new_set); if (set->flags & NFT_SET_INTERVAL) expr_free(init); set_free(new_set); - return 0; + return err; } static int do_command_get(struct netlink_ctx *ctx, struct cmd *cmd) |