]> git.ipfire.org Git - thirdparty/nftables.git/commitdiff
expression: fix constant expression splicing
authorPatrick McHardy <kaber@trash.net>
Sun, 9 Dec 2012 13:02:11 +0000 (14:02 +0100)
committerPatrick McHardy <kaber@trash.net>
Sun, 9 Dec 2012 13:08:11 +0000 (14:08 +0100)
Fix reversed order during constant splicing.

Signed-off-by: Patrick McHardy <kaber@trash.net>
src/expression.c

index 5dbc327c703ff1b0aee1cbcb37870f013cee8f3c..0bd2bb43f620ae10fc5e78c7bcf606469c5bc923 100644 (file)
@@ -291,11 +291,13 @@ struct expr *constant_expr_splice(struct expr *expr, unsigned int len)
                                    BYTEORDER_INVALID, len, NULL);
        mpz_init2(mask, len);
        mpz_bitmask(mask, len);
+       mpz_lshift_ui(mask, expr->len - len);
+
        mpz_set(slice->value, expr->value);
        mpz_and(slice->value, slice->value, mask);
+       mpz_rshift_ui(slice->value, expr->len - len);
        mpz_clear(mask);
 
-       mpz_rshift_ui(expr->value, len);
        expr->len -= len;
        return slice;
 }