diff --git a/bridge/evm/contracts/SuiBridge.sol b/bridge/evm/contracts/SuiBridge.sol index 24b862855aaef..ca5ccabd04bdb 100644 --- a/bridge/evm/contracts/SuiBridge.sol +++ b/bridge/evm/contracts/SuiBridge.sol @@ -156,6 +156,8 @@ contract SuiBridge is ISuiBridge, CommitteeUpgradeable, PausableUpgradeable { IERC20Metadata(tokenAddress).decimals(), config.tokenSuiDecimalOf(tokenID), amount ); + require(suiAdjustedAmount > 0, "SuiBridge: Invalid amount provided"); + emit TokensDeposited( config.chainID(), nonces[BridgeUtils.TOKEN_TRANSFER], diff --git a/bridge/evm/test/SuiBridgeTest.t.sol b/bridge/evm/test/SuiBridgeTest.t.sol index 66f49de523442..2ac00d899cf42 100644 --- a/bridge/evm/test/SuiBridgeTest.t.sol +++ b/bridge/evm/test/SuiBridgeTest.t.sol @@ -548,6 +548,12 @@ contract SuiBridgeTest is BridgeBaseTest, ISuiBridge { reentrantAttack.attack(); } + function testSuiBridgeInvalidDecimalConversion() public { + IERC20(wETH).approve(address(bridge), 10 ether); + vm.expectRevert(bytes("SuiBridge: Invalid amount provided")); + bridge.bridgeERC20(BridgeUtils.ETH, 1, abi.encode("suiAddress"), 0); + } + // An e2e token transfer regression test covering message ser/de and signature verification function testTransferSuiToEthRegressionTest() public { address[] memory _committee = new address[](4);