The transfer to be made from capitalPoolAddr to msg.sender is instead sent to address(this), which is the TokenManager contract in which the withdraw function is implemented.
In the TokenManager::withdraw function, when the token to be withdraw is a native token, according to the documentation this token must be transferred from capitalPoolAddr to msg.sender. But currently this token is rather transferred from capitalPoolAddr to the current contract (address(this)).
When the token to be withdrawn is a native token, the caller(msg.sender) of the TokenManager::withdraw function will receive nothing of what he is supposed to receive; the fund will remain in the contract account.
Manual review.
Change the coed as follows:
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.