]> git.ipfire.org Git - thirdparty/nftables.git/commitdiff
evaluate: set up integer type to shift expression
authorPablo Neira Ayuso <pablo@netfilter.org>
Thu, 23 Mar 2023 11:36:08 +0000 (12:36 +0100)
committerPablo Neira Ayuso <pablo@netfilter.org>
Wed, 22 Jan 2025 21:10:05 +0000 (22:10 +0100)
commit 1cdd8249f1c9c462b40ccde8d56191ea481ce610 upstream.

Otherwise expr_evaluate_value() fails with invalid datatype:

 # nft --debug=netlink add rule ip x y 'ct mark set ip dscp & 0x0f << 1'
 BUG: invalid basetype invalid
 nft: evaluate.c:440: expr_evaluate_value: Assertion `0' failed.

Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
src/evaluate.c

index 3e11e504ec9c88bc6bee9b5a5cda983ca73119b9..8d3e6de146ecc2000a53a31e0898c6a2a8bac8e2 100644 (file)
@@ -1213,6 +1213,7 @@ static int expr_evaluate_shift(struct eval_ctx *ctx, struct expr **expr)
        if (byteorder_conversion(ctx, &op->right, BYTEORDER_HOST_ENDIAN) < 0)
                return -1;
 
+       datatype_set(op, &integer_type);
        op->byteorder = BYTEORDER_HOST_ENDIAN;
        op->len       = max_shift_len;