summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorPablo Neira Ayuso <pablo@netfilter.org>2014-12-08 20:03:42 +0100
committerPablo Neira Ayuso <pablo@netfilter.org>2014-12-09 19:12:21 +0100
commit100ca4356c4a97655cbdf1d433ae1ac159514daa (patch)
tree4a94074c8dc5e2d8e02a9608757293ab7ad0af50 /src
parentf874c2935bb790be378d7916ee426baa1a228603 (diff)
rule: fix segmentation faults on kernels without nftables support
# nft list sets Segmentation fault # nft list sets <cmdline>:1:1-9: Error: Could not receive sets from kernel: Protocol error list sets ^^^^^^^^^ Fix same bug in `nft list tables'. Don't cleanup the table object for these commands since it is NULL. Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Diffstat (limited to 'src')
-rw-r--r--src/rule.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/src/rule.c b/src/rule.c
index a79a4203..95766646 100644
--- a/src/rule.c
+++ b/src/rule.c
@@ -870,7 +870,7 @@ static int do_command_list(struct netlink_ctx *ctx, struct cmd *cmd)
if (netlink_list_tables(ctx, &cmd->handle,
&cmd->location) < 0)
- goto err;
+ return -1;
list_for_each_entry(table, &ctx->list, list) {
printf("table %s\n", table->handle.table);
@@ -882,11 +882,12 @@ static int do_command_list(struct netlink_ctx *ctx, struct cmd *cmd)
return do_list_table(ctx, cmd, table);
case CMD_OBJ_SETS:
if (netlink_list_sets(ctx, &cmd->handle, &cmd->location) < 0)
- goto err;
+ return -1;
+
list_for_each_entry(set, &ctx->list, list){
if (netlink_get_setelems(ctx, &set->handle,
&cmd->location, set) < 0) {
- goto err;
+ return -1;
}
set_print(set);
}