diff options
-rw-r--r-- | src/evaluate.c | 3 | ||||
-rwxr-xr-x | tests/shell/testcases/sets/errors_0 | 11 |
2 files changed, 14 insertions, 0 deletions
diff --git a/src/evaluate.c b/src/evaluate.c index 82bf1311..073bf871 100644 --- a/src/evaluate.c +++ b/src/evaluate.c @@ -3996,6 +3996,9 @@ static int setelem_evaluate(struct eval_ctx *ctx, struct cmd *cmd) return set_not_found(ctx, &ctx->cmd->handle.set.location, ctx->cmd->handle.set.name); + if (set->key == NULL) + return -1; + set->existing_set = set; ctx->set = set; expr_set_context(&ctx->ectx, set->key->dtype, set->key->len); diff --git a/tests/shell/testcases/sets/errors_0 b/tests/shell/testcases/sets/errors_0 index a676ac73..569f4ab8 100755 --- a/tests/shell/testcases/sets/errors_0 +++ b/tests/shell/testcases/sets/errors_0 @@ -27,4 +27,15 @@ delete element x y { 1.1.1.1/24 } add element x y { 1.1.1.1/24 } delete element x y { 2.2.2.2/24 }" +$NFT -f - <<< $RULESET +if [ $? -eq 0 ] +then + exit 1 +fi + +RULESET="flush ruleset +create table inet filter +set inet filter foo {} +add element inet filter foo { foobar }" + $NFT -f - <<< $RULESET || exit 0 |