The core problem is that after processing a withdrawal, the function doesn't update the user's balance in the userTokenBalanceMap.
A user could potentially withdraw the same amount multiple times, as their recorded balance never decreases. This could lead to a situation where more funds are withdrawn than should be possible, potentially draining the contract or capital pool.
Manual Review
update the userTokenBalanceMapafter a successful withdraw
Valid critical severity finding, the lack of clearance of the `userTokenBalanceMap` mapping allows complete draining of the CapitalPool contract. Note: This would require the approval issues highlighted in other issues to be fixed first (i.e. wrong approval address within `_transfer` and lack of approvals within `_safe_transfer_from` during ERC20 withdrawals)
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.