In the PreMarkets::listOffer function there's an attempt to update the abortOfferStatus of the original offer when the offer settlement type is Turbo.
However, this update is performed on a memory variable (originOfferInfo) instead of a storage variable.
As a result, the state change does not persist, leading to a failure in updating the abort offer status of the original offer.
The following test demonstrates the value is not updated:
This bug prevents the proper updating of the original offer's status when a sub-offer is listed in Turbo settlement mode.
It disrupts the intended flow of the Turbo settlement process.
Manual Review - Testing
Modify the listOffer function to update the storage variable directly:
By changing memory to storage, we ensure that the modification is made directly to the contract's state, persisting the change to the original offer's status.
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.