diff options
author | Pablo Neira Ayuso <pablo@netfilter.org> | 2014-12-08 20:03:42 +0100 |
---|---|---|
committer | Pablo Neira Ayuso <pablo@netfilter.org> | 2014-12-09 19:12:21 +0100 |
commit | 100ca4356c4a97655cbdf1d433ae1ac159514daa (patch) | |
tree | 4a94074c8dc5e2d8e02a9608757293ab7ad0af50 | |
parent | f874c2935bb790be378d7916ee426baa1a228603 (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>
-rw-r--r-- | src/rule.c | 7 |
1 files changed, 4 insertions, 3 deletions
@@ -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); } |