All turbo offers have the ability to have subsequent offers without collateral according to the Tadle docs. https://tadle.gitbook.io/tadle/how-tadle-works/mechanics-of-tadle/turbo-mode
When lPreMarkets.istOffer()
is being called, there is a if statement that checks if offerSettleType is Turbo, the origin offer abortOfferStatus
is expected to be changed to SubOfferListed
. However the state var is not updated, instead the change is done only in memory, instead of storage.
https://github.com/Cyfrin/2024-08-tadle/blob/main/src/core/PreMarkets.sol#L336-L342
As a result, the offer info state var stays with an incorrect value.
Incorrect state of offer.abortOfferStatus
Manual review
Change the variable to storage here:
https://github.com/Cyfrin/2024-08-tadle/blob/main/src/core/PreMarkets.sol#L337C48-L337C73
Valid high severity, because the `abortOfferStatus` of the offer is not updated and persist through `storage` when listing an offer for turbo mode within the `offerInfoMap` mapping, it allows premature abortion given the `abortOfferStatus` defaults to `Initialized`, allowing the bypass of this [check](https://github.com/Cyfrin/2024-08-tadle/blob/04fd8634701697184a3f3a5558b41c109866e5f8/src/core/PreMarkets.sol#L552-L557) here and allow complete refund of initial collateral + stealing of trade tax which can potentially be gamed for profits using multiple addresses
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.