diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/evaluate.c | 1 | ||||
-rw-r--r-- | src/payload.c | 4 |
2 files changed, 4 insertions, 1 deletions
diff --git a/src/evaluate.c b/src/evaluate.c index 8ebc7561..b39f4598 100644 --- a/src/evaluate.c +++ b/src/evaluate.c @@ -2554,6 +2554,7 @@ static int stmt_evaluate_payload(struct eval_ctx *ctx, struct stmt *stmt) payload_byte_offset * BITS_PER_BYTE, payload_byte_size * BITS_PER_BYTE); + payload_bytes->payload.is_raw = 1; payload_bytes->payload.desc = payload->payload.desc; payload_bytes->byteorder = payload->byteorder; diff --git a/src/payload.c b/src/payload.c index 97b60713..c662900b 100644 --- a/src/payload.c +++ b/src/payload.c @@ -115,7 +115,9 @@ static void payload_expr_pctx_update(struct proto_ctx *ctx, assert(desc->base <= PROTO_BASE_MAX); if (desc->base == base->base) { assert(base->length > 0); - ctx->protocol[base->base].offset += base->length; + + if (!left->payload.is_raw) + ctx->protocol[base->base].offset += base->length; } proto_ctx_update(ctx, desc->base, loc, desc); } |