summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/payload.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/payload.c b/src/payload.c
index a1785a59..47861ed2 100644
--- a/src/payload.c
+++ b/src/payload.c
@@ -69,13 +69,20 @@ static void payload_expr_pctx_update(struct proto_ctx *ctx,
{
const struct expr *left = expr->left, *right = expr->right;
const struct proto_desc *base, *desc;
+ unsigned int proto = 0;
if (!(left->flags & EXPR_F_PROTOCOL))
return;
assert(expr->op == OP_EQ);
+
+ /* Export the data in the correct byte order */
+ assert(right->len / BITS_PER_BYTE <= sizeof(proto));
+ mpz_export_data(&proto, right->value, right->byteorder,
+ right->len / BITS_PER_BYTE);
+
base = ctx->protocol[left->payload.base].desc;
- desc = proto_find_upper(base, mpz_get_uint32(right->value));
+ desc = proto_find_upper(base, proto);
proto_ctx_update(ctx, left->payload.base + 1, &expr->location, desc);
}