diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/payload.c | 9 |
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); } |