A new offer can be created via PreMarkets.createOffer function. When an offer is being created, 3 addresses are generated from offerId - makerAddr, offerAddrand stockAddr. Those addresses are used as keys in mappings to store MakerInfo, OfferInfo and StockInfo.
The issue is that when those addresses are made and OfferInfo and StockInfo is stored, two different offerIds are used.
makerAddr, offerAddr and stockAddr are generated as follows
Notice that offerId is increased right after the addresses are generated.
Later on the offerId that got increased by 1 is used as id inside OfferInfo and StockInfo
This means that the id that is stored in OfferInfo and StockInfo is incorrect. The current createOffer flow will always cause offerId to be used in key, but offerId + 1 will be stored as id.
Incorrect id is stored in OfferInfo and StockInfo
Manual Review
Make sure that the offerId is increased after OfferInfo and StockInfo is stored.
I believe this is valid low severity, although there is inconsistency here when using the correct `offerId` for assigning offerIds and generating the unique addresses as seen [here](https://github.com/Cyfrin/2024-08-tadle/blob/04fd8634701697184a3f3a5558b41c109866e5f8/src/core/PreMarkets.sol#L67-L69), this is purely an accounting error for offerIds. If we generate the offerId using current `offerId - 1`, the appropriate listing/taker orders can still be created against those offers.
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.