From aae18ff0b2aa18091c54be5873ddf1de97cd24ad Mon Sep 17 00:00:00 2001 From: Jeremy Sowden Date: Mon, 3 Feb 2020 11:20:20 +0000 Subject: evaluate: change shift byte-order to host-endian. The byte-order of the righthand operands of the right-shifts generated for payload and exthdr expressions is big-endian. However, all right operands should be host-endian. Since evaluation of the shift binop will insert a byte-order conversion to enforce this, change the endianness in order to avoid the extra operation. Signed-off-by: Jeremy Sowden Signed-off-by: Pablo Neira Ayuso --- src/evaluate.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/evaluate.c b/src/evaluate.c index b6c05a81..a3cbf939 100644 --- a/src/evaluate.c +++ b/src/evaluate.c @@ -492,7 +492,7 @@ static void expr_evaluate_bits(struct eval_ctx *ctx, struct expr **exprp) if (shift) { off = constant_expr_alloc(&expr->location, expr_basetype(expr), - BYTEORDER_BIG_ENDIAN, + BYTEORDER_HOST_ENDIAN, sizeof(shift), &shift); rshift = binop_expr_alloc(&expr->location, OP_RSHIFT, and, off); -- cgit v1.2.3