From 27a2da23d5085cfa3765fb5172e93d9eb060e7df Mon Sep 17 00:00:00 2001 From: Pablo Neira Ayuso Date: Tue, 26 Sep 2023 10:02:23 +0200 Subject: netlink_linearize: skip set element expression in map statement key This fix is similar to 22d201010919 ("netlink_linearize: skip set element expression in set statement key") to fix map statement. netlink_gen_map_stmt() relies on the map key, that is expressed as a set element. Use the set element key instead to skip the set element wrap, otherwise get_register() abort execution: nft: netlink_linearize.c:650: netlink_gen_expr: Assertion `dreg < ctx->reg_low' failed. This includes JSON support to make this feature complete and it updates tests/shell to cover for this support. Reported-by: Luci Stanescu Signed-off-by: Pablo Neira Ayuso --- include/json.h | 1 + 1 file changed, 1 insertion(+) (limited to 'include') diff --git a/include/json.h b/include/json.h index da605ed9..abeeb044 100644 --- a/include/json.h +++ b/include/json.h @@ -84,6 +84,7 @@ json_t *nat_stmt_json(const struct stmt *stmt, struct output_ctx *octx); json_t *reject_stmt_json(const struct stmt *stmt, struct output_ctx *octx); json_t *counter_stmt_json(const struct stmt *stmt, struct output_ctx *octx); json_t *set_stmt_json(const struct stmt *stmt, struct output_ctx *octx); +json_t *map_stmt_json(const struct stmt *stmt, struct output_ctx *octx); json_t *log_stmt_json(const struct stmt *stmt, struct output_ctx *octx); json_t *objref_stmt_json(const struct stmt *stmt, struct output_ctx *octx); json_t *meter_stmt_json(const struct stmt *stmt, struct output_ctx *octx); -- cgit v1.2.3