Skip to content

Commit 5630276

Browse files
Transpile b99f49d
1 parent 618d129 commit 5630276

File tree

3 files changed

+8
-26
lines changed

3 files changed

+8
-26
lines changed

.github/workflows/upgradeable.yml

Lines changed: 0 additions & 23 deletions
This file was deleted.

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
# Changelog
22

3+
## 4.3.1
4+
5+
* `TimelockController`: Add additional isOperationReady check.
6+
37
## 4.3.0 (2021-08-17)
48

59
* `ERC2771Context`: use private variable from storage to store the forwarder address. Fixes issues where `_msgSender()` was not callable from constructors. ([#2754](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/2754))

contracts/governance/TimelockControllerUpgradeable.sol

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -280,7 +280,7 @@ contract TimelockControllerUpgradeable is Initializable, AccessControlUpgradeabl
280280
bytes32 salt
281281
) public payable virtual onlyRoleOrOpenRole(EXECUTOR_ROLE) {
282282
bytes32 id = hashOperation(target, value, data, predecessor, salt);
283-
_beforeCall(predecessor);
283+
_beforeCall(id, predecessor);
284284
_call(id, 0, target, value, data);
285285
_afterCall(id);
286286
}
@@ -305,7 +305,7 @@ contract TimelockControllerUpgradeable is Initializable, AccessControlUpgradeabl
305305
require(targets.length == datas.length, "TimelockController: length mismatch");
306306

307307
bytes32 id = hashOperationBatch(targets, values, datas, predecessor, salt);
308-
_beforeCall(predecessor);
308+
_beforeCall(id, predecessor);
309309
for (uint256 i = 0; i < targets.length; ++i) {
310310
_call(id, i, targets[i], values[i], datas[i]);
311311
}
@@ -315,7 +315,8 @@ contract TimelockControllerUpgradeable is Initializable, AccessControlUpgradeabl
315315
/**
316316
* @dev Checks before execution of an operation's calls.
317317
*/
318-
function _beforeCall(bytes32 predecessor) private view {
318+
function _beforeCall(bytes32 id, bytes32 predecessor) private view {
319+
require(isOperationReady(id), "TimelockController: operation is not ready");
319320
require(predecessor == bytes32(0) || isOperationDone(predecessor), "TimelockController: missing dependency");
320321
}
321322

0 commit comments

Comments
 (0)