Commit 98d0e06e authored by Maurelian's avatar Maurelian

contracts: Fix OZ-M-01 refund arguments

parent 35757456
...@@ -146,13 +146,12 @@ contract L2StandardBridge_Test is Bridge_Initializer { ...@@ -146,13 +146,12 @@ contract L2StandardBridge_Test is Bridge_Initializer {
// - invalid deposit calls Withdrawer.initiateWithdrawal // - invalid deposit calls Withdrawer.initiateWithdrawal
function test_finalizeDeposit_failsToCompleteOutboundTransfer() external { function test_finalizeDeposit_failsToCompleteOutboundTransfer() external {
// TODO: events and calls // TODO: events and calls
address invalidL2Token = address(0x1234);
vm.mockCall( vm.mockCall(
address(L2Bridge.messenger()), address(L2Bridge.messenger()),
abi.encodeWithSelector(CrossDomainMessenger.xDomainMessageSender.selector), abi.encodeWithSelector(CrossDomainMessenger.xDomainMessageSender.selector),
abi.encode(address(L2Bridge.otherBridge())) abi.encode(address(L2Bridge.otherBridge()))
); );
address invalidL2Token = address(0x1234);
vm.prank(address(L2Messenger)); vm.prank(address(L2Messenger));
vm.expectEmit(true, true, true, true); vm.expectEmit(true, true, true, true);
emit ERC20BridgeInitiated( emit ERC20BridgeInitiated(
...@@ -181,5 +180,21 @@ contract L2StandardBridge_Test is Bridge_Initializer { ...@@ -181,5 +180,21 @@ contract L2StandardBridge_Test is Bridge_Initializer {
hex"" hex""
); );
} }
// finalizeBridgeERC20
// - fails when the local token's address equals bridge address
function test_ERC20BridgeFailed_whenLocalTokenIsBridge() external {
vm.mockCall(
address(L2Bridge.messenger()),
abi.encodeWithSelector(CrossDomainMessenger.xDomainMessageSender.selector),
abi.encode(address(L2Bridge.otherBridge()))
);
// fails when the local token's address equals bridge address
vm.expectEmit(true, true, true, true);
emit ERC20BridgeFailed(address(L2Bridge), address(L1Token), alice, bob, 100, hex"");
vm.prank(address(L2Messenger));
L2Bridge.finalizeDeposit(address(L1Token), address(L2Bridge), alice, bob, 100, hex"");
}
} }
...@@ -236,11 +236,13 @@ abstract contract StandardBridge { ...@@ -236,11 +236,13 @@ abstract contract StandardBridge {
} catch { } catch {
// Something went wrong during the bridging process, return to sender. // Something went wrong during the bridging process, return to sender.
// Can happen if a bridge UI specifies the wrong L2 token. // Can happen if a bridge UI specifies the wrong L2 token.
// We reverse both the local and remote token addresses, as well as the to and from
// addresses. This will preserve the accuracy of accounting based on emitted events.
_initiateBridgeERC20Unchecked( _initiateBridgeERC20Unchecked(
_localToken, _localToken,
_remoteToken, _remoteToken,
_from,
_to, _to,
_from,
_amount, _amount,
0, // _minGasLimit, 0 is fine here 0, // _minGasLimit, 0 is fine here
_data _data
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment