summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPablo Neira Ayuso <pablo@netfilter.org>2015-09-25 12:53:40 +0200
committerPablo Neira Ayuso <pablo@netfilter.org>2015-10-12 20:34:21 +0200
commitc9737a3ace1739ca447bf904c78434f4de0c2890 (patch)
treed604cea43d35b85d71fc2cc6af3501208ba05007
parent4b3d579c281aa07282531369d43e799d6276dd22 (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>
-rw-r--r--src/evaluate.c12
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);