diff options
author | Pablo Neira Ayuso <pablo@netfilter.org> | 2015-09-25 12:53:40 +0200 |
---|---|---|
committer | Pablo Neira Ayuso <pablo@netfilter.org> | 2015-10-12 20:34:21 +0200 |
commit | c9737a3ace1739ca447bf904c78434f4de0c2890 (patch) | |
tree | d604cea43d35b85d71fc2cc6af3501208ba05007 /src | |
parent | 4b3d579c281aa07282531369d43e799d6276dd22 (diff) |
evaluate: check if set exists before listing it
After this patch, we obtain:
# nft list set ip6 test pepe
<cmdline>:1:1-22: Error: Could not process rule: Set 'foo' does not exist
list set ip6 test foo
^^^^^^^^^^^^^^^^^^^^^
So we get things aligned with table and chain listing commands.
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Acked-by: Arturo Borrero Gonzalez <arturo.borrero.glez@gmail.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/evaluate.c | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/src/evaluate.c b/src/evaluate.c index 97625864..4f9299e1 100644 --- a/src/evaluate.c +++ b/src/evaluate.c @@ -2091,10 +2091,20 @@ static int cmd_evaluate_list(struct eval_ctx *ctx, struct cmd *cmd) case CMD_OBJ_TABLE: if (cmd->handle.table == NULL) return 0; + + table = table_lookup(&cmd->handle); + if (table == NULL) + return cmd_error(ctx, "Could not process rule: Table '%s' does not exist", + cmd->handle.table); + return 0; case CMD_OBJ_SET: - if (table_lookup(&cmd->handle) == NULL) + table = table_lookup(&cmd->handle); + if (table == NULL) return cmd_error(ctx, "Could not process rule: Table '%s' does not exist", cmd->handle.table); + if (set_lookup(table, cmd->handle.set) == NULL) + return cmd_error(ctx, "Could not process rule: Set '%s' does not exist", + cmd->handle.set); return 0; case CMD_OBJ_CHAIN: table = table_lookup(&cmd->handle); |