Included bogon triggers: nft: src/evaluate.c:2267: expr_evaluate_mapping: Assertion `set->data != NULL' failed. After this fix, following errors will be shown: Error: unqualified type invalid specified in map definition. Try "typeof expression" instead of "type datatype". map m { ^ map m { ^ Error: map has no mapping data Fixes: 343a51702656 ("src: store expr, not dtype to track data in sets") Signed-off-by: Florian Westphal <fw@xxxxxxxxx> --- src/evaluate.c | 5 ++++- .../bogons/nft-f/malformed_map_expr_evaluate_mapping_assert | 6 ++++++ 2 files changed, 10 insertions(+), 1 deletion(-) create mode 100644 tests/shell/testcases/bogons/nft-f/malformed_map_expr_evaluate_mapping_assert diff --git a/src/evaluate.c b/src/evaluate.c index 5b7a9b863cd5..a22cabb615e9 100644 --- a/src/evaluate.c +++ b/src/evaluate.c @@ -2323,7 +2323,10 @@ static int expr_evaluate_mapping(struct eval_ctx *ctx, struct expr **expr) "Key must be a constant"); mapping->flags |= mapping->left->flags & EXPR_F_SINGLETON; - assert(set->data != NULL); + /* This can happen for malformed map definitions */ + if (!set->data) + return set_error(ctx, set, "map has no mapping data"); + if (!set_is_anonymous(set->flags) && set->data->flags & EXPR_F_INTERVAL) datalen = set->data->len / 2; diff --git a/tests/shell/testcases/bogons/nft-f/malformed_map_expr_evaluate_mapping_assert b/tests/shell/testcases/bogons/nft-f/malformed_map_expr_evaluate_mapping_assert new file mode 100644 index 000000000000..c77a9c33e0ad --- /dev/null +++ b/tests/shell/testcases/bogons/nft-f/malformed_map_expr_evaluate_mapping_assert @@ -0,0 +1,6 @@ +table ip x { + map m { + typeof ct saddr :ct expectation + elements = { * : none} + } +} -- 2.48.1