]> git.ipfire.org Git - thirdparty/nftables.git/commitdiff
rule: fix memleak in do_get_setelems()
authorPablo Neira Ayuso <pablo@netfilter.org>
Wed, 3 Oct 2018 14:05:32 +0000 (16:05 +0200)
committerPablo Neira Ayuso <pablo@netfilter.org>
Wed, 3 Oct 2018 14:12:41 +0000 (16:12 +0200)
Release set and elements in case of error.

Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
src/rule.c

index e6d61b670688fcc8d7006b2d5412c78040099e8a..6d027c261f9715289c602a72b79a49c8218e5d75 100644 (file)
@@ -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)