A new offer can be created via PreMarkets.createOffer
function. When an offer is being created, 3 addresses are generated from offerId
- makerAddr
, offerAddr
and 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.