In the PreMarktes::listOffer function, when a taker lists an offer in Turbo mode, the origin offer's abortOfferStatus is not properly updated in storage. This leads to potential inconsistencies in the contract state
When attempting to update the abortOfferStatus of the origin offer, memory keyword creates a local copy of the offer info, so modifications to originOfferInfo do not persist in the storage.
The originOffer abort status is in incorrect state causing issues in other parts of system (and potentially future upgrades).
For example in current implementation of PreMarktes::abortAskOffer() the check if (offerInfo.abortOfferStatus != AbortOfferStatus.Initialized) will still be BYPASSED by the originOffer since its abort offer status was never changed (when the taker listed the offer via PreMarktes::listOffer).
Manulal review
Change the declaration of originOfferInfo to use storage
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.