From 9573073688bbb227bf3cd3c39208e3311d51cb7a Mon Sep 17 00:00:00 2001 From: lukema95 <867273263@qq.com> Date: Tue, 7 Nov 2023 13:19:48 +0800 Subject: [PATCH 1/3] feat: add address(0) check --- contracts/src/L1/L1ScrollMessenger.sol | 8 ++++++++ contracts/src/L2/L2ScrollMessenger.sol | 8 ++++++++ 2 files changed, 16 insertions(+) diff --git a/contracts/src/L1/L1ScrollMessenger.sol b/contracts/src/L1/L1ScrollMessenger.sol index 3f3907c17d..3d1c6e6861 100644 --- a/contracts/src/L1/L1ScrollMessenger.sol +++ b/contracts/src/L1/L1ScrollMessenger.sol @@ -27,6 +27,11 @@ import {IMessageDropCallback} from "../libraries/callbacks/IMessageDropCallback. /// @dev All deposited Ether (including `WETH` deposited throng `L1WETHGateway`) will locked in /// this contract. contract L1ScrollMessenger is ScrollMessengerBase, IL1ScrollMessenger { + /*********** + * Errors * + ***********/ + error ErrZeroAddress(); + /*********** * Structs * ***********/ @@ -95,6 +100,9 @@ contract L1ScrollMessenger is ScrollMessengerBase, IL1ScrollMessenger { address _rollup, address _messageQueue ) public initializer { + if (_counterpart == address(0) || _rollup == address(0) || _messageQueue == address(0)) { + revert ErrZeroAddress(); + } ScrollMessengerBase.__ScrollMessengerBase_init(_counterpart, _feeVault); rollup = _rollup; diff --git a/contracts/src/L2/L2ScrollMessenger.sol b/contracts/src/L2/L2ScrollMessenger.sol index fbf2788b68..6fcdbf4558 100644 --- a/contracts/src/L2/L2ScrollMessenger.sol +++ b/contracts/src/L2/L2ScrollMessenger.sol @@ -24,6 +24,11 @@ import {ScrollMessengerBase} from "../libraries/ScrollMessengerBase.sol"; /// @dev It should be a predeployed contract on layer 2 and should hold infinite amount /// of Ether (Specifically, `uint256(-1)`), which can be initialized in Genesis Block. contract L2ScrollMessenger is ScrollMessengerBase, IL2ScrollMessenger { + /*********** + * Errors * + ***********/ + error ErrZeroAddress(); + /************* * Constants * *************/ @@ -49,12 +54,15 @@ contract L2ScrollMessenger is ScrollMessengerBase, IL2ScrollMessenger { ***************/ constructor(address _messageQueue) { + if (_messageQueue == address(0)) revert ErrZeroAddress(); + _disableInitializers(); messageQueue = _messageQueue; } function initialize(address _counterpart) external initializer { + if (_counterpart == address(0)) revert ErrZeroAddress(); ScrollMessengerBase.__ScrollMessengerBase_init(_counterpart, address(0)); } From 0746523d5bbdc9f3dd587cf07aed5dd65418f29e Mon Sep 17 00:00:00 2001 From: lukema95 <867273263@qq.com> Date: Tue, 7 Nov 2023 13:43:28 +0800 Subject: [PATCH 2/3] feat: update test contract --- contracts/src/test/L1GatewayTestBase.t.sol | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contracts/src/test/L1GatewayTestBase.t.sol b/contracts/src/test/L1GatewayTestBase.t.sol index 2d7f2c8adc..19989560e1 100644 --- a/contracts/src/test/L1GatewayTestBase.t.sol +++ b/contracts/src/test/L1GatewayTestBase.t.sol @@ -82,7 +82,7 @@ abstract contract L1GatewayTestBase is DSTestPlus { verifier = new MockRollupVerifier(); // Deploy L2 contracts - l2Messenger = new L2ScrollMessenger(address(0)); + l2Messenger = new L2ScrollMessenger(address(1)); // Initialize L1 contracts l1Messenger.initialize(address(l2Messenger), feeVault, address(rollup), address(messageQueue)); From ab972dd5c87105b5afbb17a46a9002d95b32df73 Mon Sep 17 00:00:00 2001 From: lukema95 <867273263@qq.com> Date: Tue, 7 Nov 2023 18:58:01 +0800 Subject: [PATCH 3/3] feat: remove ErrZeroAddress() to IScrollMessenger --- contracts/src/L1/L1ScrollMessenger.sol | 5 ----- contracts/src/L2/L2ScrollMessenger.sol | 5 ----- contracts/src/libraries/IScrollMessenger.sol | 5 +++++ 3 files changed, 5 insertions(+), 10 deletions(-) diff --git a/contracts/src/L1/L1ScrollMessenger.sol b/contracts/src/L1/L1ScrollMessenger.sol index 3d1c6e6861..4941697519 100644 --- a/contracts/src/L1/L1ScrollMessenger.sol +++ b/contracts/src/L1/L1ScrollMessenger.sol @@ -27,11 +27,6 @@ import {IMessageDropCallback} from "../libraries/callbacks/IMessageDropCallback. /// @dev All deposited Ether (including `WETH` deposited throng `L1WETHGateway`) will locked in /// this contract. contract L1ScrollMessenger is ScrollMessengerBase, IL1ScrollMessenger { - /*********** - * Errors * - ***********/ - error ErrZeroAddress(); - /*********** * Structs * ***********/ diff --git a/contracts/src/L2/L2ScrollMessenger.sol b/contracts/src/L2/L2ScrollMessenger.sol index 6fcdbf4558..76440e13d4 100644 --- a/contracts/src/L2/L2ScrollMessenger.sol +++ b/contracts/src/L2/L2ScrollMessenger.sol @@ -24,11 +24,6 @@ import {ScrollMessengerBase} from "../libraries/ScrollMessengerBase.sol"; /// @dev It should be a predeployed contract on layer 2 and should hold infinite amount /// of Ether (Specifically, `uint256(-1)`), which can be initialized in Genesis Block. contract L2ScrollMessenger is ScrollMessengerBase, IL2ScrollMessenger { - /*********** - * Errors * - ***********/ - error ErrZeroAddress(); - /************* * Constants * *************/ diff --git a/contracts/src/libraries/IScrollMessenger.sol b/contracts/src/libraries/IScrollMessenger.sol index a2b149c946..353ffc7756 100644 --- a/contracts/src/libraries/IScrollMessenger.sol +++ b/contracts/src/libraries/IScrollMessenger.sol @@ -3,6 +3,11 @@ pragma solidity ^0.8.16; interface IScrollMessenger { + /*********** + * Errors * + ***********/ + error ErrZeroAddress(); + /********** * Events * **********/