summaryrefslogtreecommitdiffstats
path: root/src/evaluate.c
diff options
context:
space:
mode:
authorJeremy Sowden <jeremy@azazel.net>2024-04-29 20:27:52 +0100
committerPablo Neira Ayuso <pablo@netfilter.org>2025-01-23 01:35:35 +0100
commit8893f279392307f48694e6af617a16cd705a0f00 (patch)
tree5135a8a24197508d82d9ba80e7c7e9e52a71a692 /src/evaluate.c
parentb448e8ed3dcfd03c2ba3d49f9b513b4f8940fb0b (diff)
evaluate: handle invalid mapping expressions in stateful object statements gracefully.
commit 52a7af9bec15a4fb4bfea86e40b70f96098f7dfd upstream. Currently, they are reported as assertion failures: BUG: invalid mapping expression variable nft: src/evaluate.c:4618: stmt_evaluate_objref_map: Assertion `0' failed. Aborted Instead, report them more informatively as errors: /space/azazel/tmp/ruleset.1067161.nft:15:29-38: Error: invalid mapping expression variable quota name ip saddr map $quota_map ~~~~~~~~ ^^^^^^^^^^ Signed-off-by: Jeremy Sowden <jeremy@azazel.net> Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Diffstat (limited to 'src/evaluate.c')
-rw-r--r--src/evaluate.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/evaluate.c b/src/evaluate.c
index 3ec0b1c0..f703cc53 100644
--- a/src/evaluate.c
+++ b/src/evaluate.c
@@ -4403,8 +4403,9 @@ static int stmt_evaluate_objref_map(struct eval_ctx *ctx, struct stmt *stmt)
"Expression is not a map with objects");
break;
default:
- BUG("invalid mapping expression %s\n",
- expr_name(map->mappings));
+ return expr_binary_error(ctx->msgs, map->mappings, map->map,
+ "invalid mapping expression %s",
+ expr_name(map->mappings));
}
if (!datatype_compatible(map->mappings->set->key->dtype, map->map->dtype))