]> git.ipfire.org Git - thirdparty/nftables.git/commitdiff
evaluate: handle invalid mapping expressions gracefully
authorFlorian Westphal <fw@strlen.de>
Mon, 4 Dec 2023 16:47:50 +0000 (17:47 +0100)
committerFlorian Westphal <fw@strlen.de>
Tue, 5 Dec 2023 11:43:21 +0000 (12:43 +0100)
Before:
BUG: invalid mapping expression binop
nft: src/evaluate.c:2027: expr_evaluate_map: Assertion `0' failed.

After:
tests/shell/testcases/bogons/nft-f/invalid_mapping_expr_binop_assert:1:22-25: Error: invalid mapping expression binop
xy mame ip saddr map h& p p
        ~~~~~~~~     ^^^^
Signed-off-by: Florian Westphal <fw@strlen.de>
src/evaluate.c
tests/shell/testcases/bogons/nft-f/invalid_mapping_expr_binop_assert [new file with mode: 0644]

index 64deb31a6ec4873515e8fe581ea73ca1921898c2..b6428018c398ea7dd8511186725936f20b6a0616 100644 (file)
@@ -2024,8 +2024,8 @@ static int expr_evaluate_map(struct eval_ctx *ctx, struct expr **expr)
                /* symbol has been already evaluated to set reference */
                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))
diff --git a/tests/shell/testcases/bogons/nft-f/invalid_mapping_expr_binop_assert b/tests/shell/testcases/bogons/nft-f/invalid_mapping_expr_binop_assert
new file mode 100644 (file)
index 0000000..7205ff4
--- /dev/null
@@ -0,0 +1 @@
+xy mame ip saddr map h& p p