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"