]> git.ipfire.org Git - thirdparty/nftables.git/commitdiff
evaluate: handle invalid mapping expressions gracefully
authorPablo Neira Ayuso <pablo@netfilter.org>
Tue, 5 Dec 2023 14:26:10 +0000 (15:26 +0100)
committerPablo Neira Ayuso <pablo@netfilter.org>
Tue, 5 Dec 2023 14:49:05 +0000 (15:49 +0100)
commit 778e4e113673c2a4daa798634c554c40f2808276 upstream.

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 bdd7d4582978a7ddc1e8599985a58e1f75a674f3..1b4d3a6be7c37aeaad308b7611a3d6f52a90fc43 100644 (file)
@@ -1839,8 +1839,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_equal(map->map->dtype, map->mappings->set->key->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