The listOffer() function does not correctly update the originOfferInfo.abortOfferStatus to AbortOfferStatus.SubOfferListed for Turbo offers, causing these offers can still be aborted even after having sub-offers. Users who bids on sub Turbo offers cannot be settled properly.
In the listOffer() function, Turbo offers should update the abortOfferStatus to AbortOfferStatus.SubOfferListed to prevent them from being aborted once sub-offers are created. However, the code mistakenly updates a local memory copy of originOfferInfo rather than the actual state in storage:
As a result, the abortOfferStatus remains Initialized even after sub-offers are listed, leading to Turbo offer does not reflect that it has sub-offers and can be wrongly aborted since the condition in abortAskOffer() checks for abortOfferStatus being different from Initialized.
Turbo offers can be aborted even if sub-offers are created. Users who interact with these offers cannot be settled and could experience financial losses.
vscode
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.