From c9737a3ace1739ca447bf904c78434f4de0c2890 Mon Sep 17 00:00:00 2001 From: Pablo Neira Ayuso Date: Fri, 25 Sep 2015 12:53:40 +0200 Subject: evaluate: check if set exists before listing it After this patch, we obtain: # nft list set ip6 test pepe :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 Acked-by: Arturo Borrero Gonzalez --- src/evaluate.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'src/evaluate.c') 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); -- cgit v1.2.3