From 313029ff9d721d70305ffcdaf5b05d2218e0b8f2 Mon Sep 17 00:00:00 2001 From: zhl Date: Wed, 19 Apr 2023 17:58:10 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=80=E4=BA=9B=E6=89=B9=E9=87=8F=E6=93=8D?= =?UTF-8?q?=E4=BD=9C=E5=A2=9E=E5=8A=A0=E6=95=B0=E7=BB=84=E6=98=AF=E5=90=A6?= =?UTF-8?q?=E6=9C=AA=E7=A9=BA=E7=9A=84=E5=88=A4=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- contracts/core/BEMultiSigWallet.sol | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/contracts/core/BEMultiSigWallet.sol b/contracts/core/BEMultiSigWallet.sol index e75d661..4a61519 100644 --- a/contracts/core/BEMultiSigWallet.sol +++ b/contracts/core/BEMultiSigWallet.sol @@ -199,6 +199,10 @@ contract BEMultiSigWallet is AccessControlEnumerable { bytes32 salt, uint256 delay ) external virtual onlyRoleOrOpenRole(PROPOSER_ROLE) { + require( + targets.length > 0, + "BEMultiSigWallet: no transactions to schedule" + ); require( targets.length == values.length, "BEMultiSigWallet: length mismatch" @@ -247,6 +251,7 @@ contract BEMultiSigWallet is AccessControlEnumerable { function confirmTransaction( bytes32[] calldata ids ) external onlyRoleOrOpenRole(CONFIRM_ROLE) { + require(ids.length > 0, "BEMultiSigWallet: empty ids"); for (uint256 i = 0; i < ids.length; ++i) { require( isOperationPending(ids[i]), @@ -263,6 +268,7 @@ contract BEMultiSigWallet is AccessControlEnumerable { function revokeConfirmation( bytes32[] calldata ids ) external onlyRoleOrOpenRole(CONFIRM_ROLE) { + require(ids.length > 0, "BEMultiSigWallet: empty ids"); for (uint256 i = 0; i < ids.length; ++i) { require( isOperationPending(ids[i]), @@ -289,6 +295,7 @@ contract BEMultiSigWallet is AccessControlEnumerable { bytes32 predecessor, bytes32 salt ) external payable virtual onlyRoleOrOpenRole(EXECUTOR_ROLE) { + require(targets.length > 0, "BEMultiSigWallet: no calls to make"); require( targets.length == values.length, "BEMultiSigWallet: length mismatch"