As stated in AuctionFactory::actionEnd
, all actionTokens will be transferred to owner(AuctionFactory
) if no bids were placed.
Since we have no sweep mechanism to recover tokens from AuctionFactory
, it will get locked permenantly.
The AuctionFactory::createAuction()
function is tasked with creating the FjordAuction
contract. Ownership of the newly created FjordAuction contract is assigned to the AuctionFactory
contract itself. If no bids are received during the auction, funds are returned to the AuctionFactory
contract upon calling AuctionFactory::auctionEnd()
. However, due to the lack of an implementation for transferring ERC20 tokens within the AuctionFactory contract, the auctionToken remains permanently locked there.
The following code snippet demonstrates the issue: when the owner invokes AuctionFactory::createAuction() to deploy the FjordAuction contract, the msg.sender
in the FjordAuction::constructor() is the AuctionFactory contract, making owner == AuctionFactory
.
In AuctionFactory::createAuction()
:
In FjordAuction::constructor()
:
If no bids are placed during the auction, the auctionToken
will be permanently locked within the AuctionFactory
contract.
Manual Review
Consider including an explicit owner
parameter in auction create process.
An auction with 0 bids will get the `totalTokens` stuck inside the contract. Impact: High - Tokens are forever lost Likelihood - Low - Super small chances of happening, but not impossible
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.