the emergencyWithdraw function in FeeCollector contract, transfers raac tokens to the Treasury contract if token address is raac token. the issue is these tokens will be stuck in Treasury contract forever.
The Treasury contract have deposit() and withdraw() functions, and the logic is allows only funds that comes from deposit() function can be withdrawn:
the issue is emergencyWithdraw() function in FeeCollector contract sends raac tokens by using safeTransfer() not deposit() function of Treasury contract:
therefor all of the raac tokens that directly sends to Treasury contract will be stuck because there is no way to withdraw it because the _balances mapping doesnt updated so withdraw() will be revert by underflow.
Some raac tokens will be stuck in Treasury contract for ever.
Manual Review
Consider using deposit() function of Treasury contract when transfering funds.
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.