A missing account field in the CreateOrderParamsAddresses struct causes the validCallback modifier in afterOrderExecution to always fail, preventing order execution callbacks from being processed correctly.
The validCallback modifier checks that order.addresses.account is equal to address(this). However, in createOrder, the CreateOrderParamsAddresses struct does not include the account field, potentially leaving order.addresses.account uninitialized or set to 0x0. This causes the following check to fail:
As a result, any calls to afterOrderExecution will revert due to the validCallback modifier, preventing order execution callbacks from proceeding.
Expected behaviour
order.addresses.account should be correctly set when an order is created.
The validCallback check should pass if the order belongs to the contract.
afterOrderExecution should execute successfully.
Actual Behavior
order.addresses.account is not explicitly set during order creation.
validCallback fails with "not mine".
Order execution callbacks are blocked.
Orders are created successfully but fail during execution callbacks.
Manual review
There is no real proof, concrete root cause, specific impact, or enough details in those submissions. Examples include: "It could happen" without specifying when, "If this impossible case happens," "Unexpected behavior," etc. Make a Proof of Concept (PoC) using external functions and realistic parameters. Do not test only the internal function where you think you found something.
The contest is live. Earn rewards by submitting a finding.
This is your time to appeal against judgements on your submissions.
Appeals are being carefully reviewed by our judges.