diff options
author | Pablo Neira Ayuso <pablo@netfilter.org> | 2023-12-06 13:40:22 +0100 |
---|---|---|
committer | Pablo Neira Ayuso <pablo@netfilter.org> | 2023-12-06 16:21:02 +0100 |
commit | 1949a63215b423b914d3a7a9de7511cb48af3c09 (patch) | |
tree | aaa46b868fd5e782d03765a2e56499a55870e246 /src/evaluate.c | |
parent | 0d9392eef5f2c79ac7c19f59754a0aee574b5617 (diff) |
evaluate: reject set definition with no key
tests/shell/testcases/bogons/nft-f/set_definition_with_no_key_assert
BUG: unhandled key type 2
nft: src/intervals.c:59: setelem_expr_to_range: Assertion `0' failed.
This patch adds a new unit tests/shell courtesy of Florian Westphal.
Fixes: 3975430b12d9 ("src: expand table command before evaluation")
Reported-by: Florian Westphal <fw@strlen.de>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Diffstat (limited to 'src/evaluate.c')
-rw-r--r-- | src/evaluate.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/src/evaluate.c b/src/evaluate.c index 58cc811a..c32857c7 100644 --- a/src/evaluate.c +++ b/src/evaluate.c @@ -4693,6 +4693,12 @@ static int set_evaluate(struct eval_ctx *ctx, struct set *set) struct stmt *stmt; const char *type; + type = set_is_map(set->flags) ? "map" : "set"; + + if (set->key == NULL) + return set_error(ctx, set, "%s definition does not specify key", + type); + if (!set_is_anonymous(set->flags)) { table = table_cache_find(&ctx->nft->cache.table_cache, set->handle.table.name, @@ -4716,8 +4722,6 @@ static int set_evaluate(struct eval_ctx *ctx, struct set *set) if (!(set->flags & NFT_SET_INTERVAL) && set->automerge) return set_error(ctx, set, "auto-merge only works with interval sets"); - type = set_is_map(set->flags) ? "map" : "set"; - if (set->key == NULL) return set_error(ctx, set, "%s definition does not specify key", type); |