The contract allows users to create orders with a deadline
field, intended to signal expiration. However, this deadline is never enforced by the smart contract. The order remains executable even after the deadline has passed, unless is explicitly cancelled by the user.
This leads to a trust issue where users believe an order is no longer active, but it can still be executed by others, causing confusion or financial loss in a time-sensitive scenario.
Likelihood:
This happens every time a user submits an order with a deadline and forgets to cancel it.
May be triggered by third parties calling buyOrder()
on expired orders.
Impact:
Unexpected trades after user-intended expiration
Out-of-date transactions can still be completed
Potential front-running if market price has changed since the expiration
Check the order’s deadline
during execution functions like buyOrder()
:
This allows flexibility:
deadline == 0
means no expiration (optional for permanent orders)
Otherwise, the order must be executed before the timestamp
Apply this check in both buyOrder()
and any other function that executes trades.
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.