TokenManager::withdraw
function transfers wrapped native tokens to the TokenManager contract instead of the caller (msg.sender).
In the TokenManager::withdraw
function, if the token to be withdrawn is the native token, the wrapped native tokens are transferred to the address(this)
(TokenManager contract). However, the documentation stipulates that those funds should be transferred to the msg.sender
from capitalPoolAddr
to msg.sender
.
Below is the TokenManger::_transfer
function :
This means that when withdrawing users withdraw tokens, wrapped native tokens are sent to the TokenManager contract instead of the caller.
When calling the TokenManager::withdraw
function, if the token to be withdrawn is the native token, the caller will not receive their wrapped native tokens. Those funds will be stuck in the TokenManger contract.
Manual review.
Change the receiver to msg.sender
instead of address(this)
at TokenManager#L163.
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.