L1Sender approved erc20 token _newToken in _replaceDepositTokenGateway at line 95. _newToken is wstEth according to protocol. And when
GatewayRouterMock::outboundTransfer is called in L1Sender::sendDepositToken function. In outboundTransfer function
wstEth _token is transferred from it's caller L1Sender. Since L1Sender already approve this contract so they will be transferred. But after coming here they are neither transfer to it's receiver nor their is anyway to withdraw them from GatewayRouterMock contract so those tokens will be stuck here forever.
contracts/mock/GatewayRouterMock.sol#L6-L18
contracts/L1Sender.sol#L114-L121
/main/contracts/L1Sender.sol#L95
wstEth tokens or any erc20 token approved to GatewayRouterMock by L1Sender will be stuck in GatewayRouterMock contract. There is no way to withdraw them neither GatewayRouterMock is approving to anyone nor tokens will not be sent to it's passed receiver.
Manual Review
Transfer/approve the erc20 tokens to it's receiver for that they are coming. And also add a withdraw function controlled by owner in the contract GatewayRouterMock so he can withdraw stuck erc20 tokens.
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.