processAuction() in VaultAdmin.sol can be called multiple times by keeper if the auction is canceled.
processAuction() in VaultAdmin.sol can be called multiple times by keeper if the auction is canceled.\\nprocessAuction() in VaultAdmin.sol can be called multiple times by keeper, the code below would execute more than one times if the auction is canceled.\\nbecause it is the line of code inside the function processAuction in VaultAdmin.sol below that can change the auction status to PROCESSED.\\nthis code only runs when the auction is finalized, it not finalized, the auction is in Canceled State and\\n```\\n   bool cancelled = l.Auction.isCancelled(lastEpoch);\\n        bool finalized = l.Auction.isFinalized(lastEpoch);\\n\\n        require(\\n            (!finalized && cancelled) || (finalized && !cancelled),\\n            "auction is not finalized nor cancelled"\\n        );\\n```\\n\\nwould always pass because the auction is in cancel state.
Issue processAuction() in VaultAdmin.sol can be called multiple times by keeper if the auction is canceled.\\nWe recommend the project lock the epoch and make it impossible for keeper to call the processAuction again.
Why the processAuction should not be called multiple times?\\nIn the first time it is called, the withdrawal lock is released so user can withdraw fund,\\n```\\n // deactivates withdrawal lock\\n  l.auctionProcessed = true;\\n```\\n\\nthen if we called again, the lastTotalAssets can be updated multiple times.\\n```\\n        // stores the last total asset amount, this is effectively the amount of assets held\\n        // in the vault at the start of the auction\\n        l.lastTotalAssets = _totalAssets();\\n```\\n\\nthe total asset can be lower and lower because people are withdrawing their fund.\\nthen when _collectPerformanceFee is called, the performance may still be collected
```\\n   bool cancelled = l.Auction.isCancelled(lastEpoch);\\n        bool finalized = l.Auction.isFinalized(lastEpoch);\\n\\n        require(\\n            (!finalized && cancelled) || (finalized && !cancelled),\\n            "auction is not finalized nor cancelled"\\n        );\\n```\\n