FeeCollector
distributes the fees to a treasury address through a direct transfer call. This will bypass the accounting logic in deposit which can cause the call to withdraw to revert.
FeeCollector
handles the distribution of fees to different actors. One of these actors is the project treasury. If we take a look at _processDistributions, it makes a direct transfer call to the treasury address. This is problematic when we look at the deposit logic in the treasury contract. There is an accounting variable _balances
that keeps track of the amount of a token deposited into the treasury.
When a manager attempts to withdraw this token, there is a check in withdraw
to ensure there is a sufficient amount of the token through the _balances
variable. The problem is this variable does not account for tokens transferred directly to this contract. If all the funds are being directly transferred to this contract, that check will revert resulting in all of the tokens being stuck.
Loss a fees for the project treasury
Manual Review
Deposit the fees into the treasury contract rather than doing a direct transfer.
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.