Skip to content

Commit 44c52af

Browse files
Transpile 5fcb6c7
1 parent 6e8820d commit 44c52af

File tree

220 files changed

+604
-473
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

220 files changed

+604
-473
lines changed

CHANGELOG.md

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

3+
## 4.4.1 (2021-12-14)
4+
5+
* `Initializable`: change the existing `initializer` modifier and add a new `onlyInitializing` modifier to prevent reentrancy risk. ([#3006](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/3006))
6+
7+
### Breaking change
8+
9+
It is no longer possible to call an `initializer`-protected function from within another `initializer` function outside the context of a constructor. Projects using OpenZeppelin upgradeable proxies should continue to work as is, since in the common case the initializer is invoked in the constructor directly. If this is not the case for you, the suggested change is to use the new `onlyInitializing` modifier in the following way:
10+
11+
```diff
12+
contract A {
13+
- function initialize() public initializer { ... }
14+
+ function initialize() internal onlyInitializing { ... }
15+
}
16+
contract B is A {
17+
function initialize() public initializer {
18+
A.initialize();
19+
}
20+
}
21+
```
22+
323
## 4.4.0 (2021-11-25)
424

525
* `Ownable`: add an internal `_transferOwnership(address)`. ([#2568](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/2568))

contracts/access/AccessControlEnumerableUpgradeable.sol

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
// SPDX-License-Identifier: MIT
2-
// OpenZeppelin Contracts v4.4.0 (access/AccessControlEnumerable.sol)
2+
// OpenZeppelin Contracts v4.4.1 (access/AccessControlEnumerable.sol)
33

44
pragma solidity ^0.8.0;
55

@@ -12,14 +12,14 @@ import "../proxy/utils/Initializable.sol";
1212
* @dev Extension of {AccessControl} that allows enumerating the members of each role.
1313
*/
1414
abstract contract AccessControlEnumerableUpgradeable is Initializable, IAccessControlEnumerableUpgradeable, AccessControlUpgradeable {
15-
function __AccessControlEnumerable_init() internal initializer {
15+
function __AccessControlEnumerable_init() internal onlyInitializing {
1616
__Context_init_unchained();
1717
__ERC165_init_unchained();
1818
__AccessControl_init_unchained();
1919
__AccessControlEnumerable_init_unchained();
2020
}
2121

22-
function __AccessControlEnumerable_init_unchained() internal initializer {
22+
function __AccessControlEnumerable_init_unchained() internal onlyInitializing {
2323
}
2424
using EnumerableSetUpgradeable for EnumerableSetUpgradeable.AddressSet;
2525

contracts/access/AccessControlUpgradeable.sol

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
// SPDX-License-Identifier: MIT
2-
// OpenZeppelin Contracts v4.4.0 (access/AccessControl.sol)
2+
// OpenZeppelin Contracts v4.4.1 (access/AccessControl.sol)
33

44
pragma solidity ^0.8.0;
55

@@ -48,13 +48,13 @@ import "../proxy/utils/Initializable.sol";
4848
* accounts that have been granted it.
4949
*/
5050
abstract contract AccessControlUpgradeable is Initializable, ContextUpgradeable, IAccessControlUpgradeable, ERC165Upgradeable {
51-
function __AccessControl_init() internal initializer {
51+
function __AccessControl_init() internal onlyInitializing {
5252
__Context_init_unchained();
5353
__ERC165_init_unchained();
5454
__AccessControl_init_unchained();
5555
}
5656

57-
function __AccessControl_init_unchained() internal initializer {
57+
function __AccessControl_init_unchained() internal onlyInitializing {
5858
}
5959
struct RoleData {
6060
mapping(address => bool) members;

contracts/access/IAccessControlEnumerableUpgradeable.sol

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
// SPDX-License-Identifier: MIT
2-
// OpenZeppelin Contracts v4.4.0 (access/IAccessControlEnumerable.sol)
2+
// OpenZeppelin Contracts v4.4.1 (access/IAccessControlEnumerable.sol)
33

44
pragma solidity ^0.8.0;
55

contracts/access/IAccessControlUpgradeable.sol

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
// SPDX-License-Identifier: MIT
2-
// OpenZeppelin Contracts v4.4.0 (access/IAccessControl.sol)
2+
// OpenZeppelin Contracts v4.4.1 (access/IAccessControl.sol)
33

44
pragma solidity ^0.8.0;
55

contracts/access/OwnableUpgradeable.sol

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
// SPDX-License-Identifier: MIT
2-
// OpenZeppelin Contracts v4.4.0 (access/Ownable.sol)
2+
// OpenZeppelin Contracts v4.4.1 (access/Ownable.sol)
33

44
pragma solidity ^0.8.0;
55

@@ -26,12 +26,12 @@ abstract contract OwnableUpgradeable is Initializable, ContextUpgradeable {
2626
/**
2727
* @dev Initializes the contract setting the deployer as the initial owner.
2828
*/
29-
function __Ownable_init() internal initializer {
29+
function __Ownable_init() internal onlyInitializing {
3030
__Context_init_unchained();
3131
__Ownable_init_unchained();
3232
}
3333

34-
function __Ownable_init_unchained() internal initializer {
34+
function __Ownable_init_unchained() internal onlyInitializing {
3535
_transferOwnership(_msgSender());
3636
}
3737

contracts/finance/PaymentSplitterUpgradeable.sol

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
// SPDX-License-Identifier: MIT
2-
// OpenZeppelin Contracts v4.4.0 (finance/PaymentSplitter.sol)
2+
// OpenZeppelin Contracts v4.4.1 (finance/PaymentSplitter.sol)
33

44
pragma solidity ^0.8.0;
55

@@ -48,12 +48,12 @@ contract PaymentSplitterUpgradeable is Initializable, ContextUpgradeable {
4848
* All addresses in `payees` must be non-zero. Both arrays must have the same non-zero length, and there must be no
4949
* duplicates in `payees`.
5050
*/
51-
function __PaymentSplitter_init(address[] memory payees, uint256[] memory shares_) internal initializer {
51+
function __PaymentSplitter_init(address[] memory payees, uint256[] memory shares_) internal onlyInitializing {
5252
__Context_init_unchained();
5353
__PaymentSplitter_init_unchained(payees, shares_);
5454
}
5555

56-
function __PaymentSplitter_init_unchained(address[] memory payees, uint256[] memory shares_) internal initializer {
56+
function __PaymentSplitter_init_unchained(address[] memory payees, uint256[] memory shares_) internal onlyInitializing {
5757
require(payees.length == shares_.length, "PaymentSplitter: payees and shares length mismatch");
5858
require(payees.length > 0, "PaymentSplitter: no payees");
5959

contracts/finance/VestingWalletUpgradeable.sol

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
// SPDX-License-Identifier: MIT
2-
// OpenZeppelin Contracts v4.4.0 (finance/VestingWallet.sol)
2+
// OpenZeppelin Contracts v4.4.1 (finance/VestingWallet.sol)
33
pragma solidity ^0.8.0;
44

55
import "../token/ERC20/utils/SafeERC20Upgradeable.sol";
@@ -35,7 +35,7 @@ contract VestingWalletUpgradeable is Initializable, ContextUpgradeable {
3535
address beneficiaryAddress,
3636
uint64 startTimestamp,
3737
uint64 durationSeconds
38-
) internal initializer {
38+
) internal onlyInitializing {
3939
__Context_init_unchained();
4040
__VestingWallet_init_unchained(beneficiaryAddress, startTimestamp, durationSeconds);
4141
}
@@ -44,7 +44,7 @@ contract VestingWalletUpgradeable is Initializable, ContextUpgradeable {
4444
address beneficiaryAddress,
4545
uint64 startTimestamp,
4646
uint64 durationSeconds
47-
) internal initializer {
47+
) internal onlyInitializing {
4848
require(beneficiaryAddress != address(0), "VestingWallet: beneficiary is zero address");
4949
_beneficiary = beneficiaryAddress;
5050
_start = startTimestamp;

contracts/governance/GovernorUpgradeable.sol

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
// SPDX-License-Identifier: MIT
2-
// OpenZeppelin Contracts v4.4.0 (governance/Governor.sol)
2+
// OpenZeppelin Contracts v4.4.1 (governance/Governor.sol)
33

44
pragma solidity ^0.8.0;
55

@@ -53,15 +53,15 @@ abstract contract GovernorUpgradeable is Initializable, ContextUpgradeable, ERC1
5353
/**
5454
* @dev Sets the value for {name} and {version}
5555
*/
56-
function __Governor_init(string memory name_) internal initializer {
56+
function __Governor_init(string memory name_) internal onlyInitializing {
5757
__Context_init_unchained();
5858
__ERC165_init_unchained();
5959
__EIP712_init_unchained(name_, version());
6060
__IGovernor_init_unchained();
6161
__Governor_init_unchained(name_);
6262
}
6363

64-
function __Governor_init_unchained(string memory name_) internal initializer {
64+
function __Governor_init_unchained(string memory name_) internal onlyInitializing {
6565
_name = name_;
6666
}
6767

contracts/governance/IGovernorUpgradeable.sol

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
// SPDX-License-Identifier: MIT
2-
// OpenZeppelin Contracts v4.4.0 (governance/IGovernor.sol)
2+
// OpenZeppelin Contracts v4.4.1 (governance/IGovernor.sol)
33

44
pragma solidity ^0.8.0;
55

@@ -12,11 +12,11 @@ import "../proxy/utils/Initializable.sol";
1212
* _Available since v4.3._
1313
*/
1414
abstract contract IGovernorUpgradeable is Initializable, IERC165Upgradeable {
15-
function __IGovernor_init() internal initializer {
15+
function __IGovernor_init() internal onlyInitializing {
1616
__IGovernor_init_unchained();
1717
}
1818

19-
function __IGovernor_init_unchained() internal initializer {
19+
function __IGovernor_init_unchained() internal onlyInitializing {
2020
}
2121
enum ProposalState {
2222
Pending,

contracts/governance/TimelockControllerUpgradeable.sol

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
// SPDX-License-Identifier: MIT
2-
// OpenZeppelin Contracts v4.4.0 (governance/TimelockController.sol)
2+
// OpenZeppelin Contracts v4.4.1 (governance/TimelockController.sol)
33

44
pragma solidity ^0.8.0;
55

@@ -65,7 +65,7 @@ contract TimelockControllerUpgradeable is Initializable, AccessControlUpgradeabl
6565
uint256 minDelay,
6666
address[] memory proposers,
6767
address[] memory executors
68-
) internal initializer {
68+
) internal onlyInitializing {
6969
__Context_init_unchained();
7070
__ERC165_init_unchained();
7171
__AccessControl_init_unchained();
@@ -76,7 +76,7 @@ contract TimelockControllerUpgradeable is Initializable, AccessControlUpgradeabl
7676
uint256 minDelay,
7777
address[] memory proposers,
7878
address[] memory executors
79-
) internal initializer {
79+
) internal onlyInitializing {
8080
_setRoleAdmin(TIMELOCK_ADMIN_ROLE, TIMELOCK_ADMIN_ROLE);
8181
_setRoleAdmin(PROPOSER_ROLE, TIMELOCK_ADMIN_ROLE);
8282
_setRoleAdmin(EXECUTOR_ROLE, TIMELOCK_ADMIN_ROLE);

contracts/governance/compatibility/GovernorCompatibilityBravoUpgradeable.sol

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
// SPDX-License-Identifier: MIT
2-
// OpenZeppelin Contracts v4.4.0 (governance/compatibility/GovernorCompatibilityBravo.sol)
2+
// OpenZeppelin Contracts v4.4.1 (governance/compatibility/GovernorCompatibilityBravo.sol)
33

44
pragma solidity ^0.8.0;
55

@@ -21,7 +21,7 @@ import "../../proxy/utils/Initializable.sol";
2121
* _Available since v4.3._
2222
*/
2323
abstract contract GovernorCompatibilityBravoUpgradeable is Initializable, IGovernorTimelockUpgradeable, IGovernorCompatibilityBravoUpgradeable, GovernorUpgradeable {
24-
function __GovernorCompatibilityBravo_init() internal initializer {
24+
function __GovernorCompatibilityBravo_init() internal onlyInitializing {
2525
__Context_init_unchained();
2626
__ERC165_init_unchained();
2727
__IGovernor_init_unchained();
@@ -30,7 +30,7 @@ abstract contract GovernorCompatibilityBravoUpgradeable is Initializable, IGover
3030
__GovernorCompatibilityBravo_init_unchained();
3131
}
3232

33-
function __GovernorCompatibilityBravo_init_unchained() internal initializer {
33+
function __GovernorCompatibilityBravo_init_unchained() internal onlyInitializing {
3434
}
3535
using CountersUpgradeable for CountersUpgradeable.Counter;
3636
using TimersUpgradeable for TimersUpgradeable.BlockNumber;

contracts/governance/compatibility/IGovernorCompatibilityBravoUpgradeable.sol

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
// SPDX-License-Identifier: MIT
2-
// OpenZeppelin Contracts v4.4.0 (governance/compatibility/IGovernorCompatibilityBravo.sol)
2+
// OpenZeppelin Contracts v4.4.1 (governance/compatibility/IGovernorCompatibilityBravo.sol)
33

44
pragma solidity ^0.8.0;
55

@@ -12,12 +12,12 @@ import "../../proxy/utils/Initializable.sol";
1212
* _Available since v4.3._
1313
*/
1414
abstract contract IGovernorCompatibilityBravoUpgradeable is Initializable, IGovernorUpgradeable {
15-
function __IGovernorCompatibilityBravo_init() internal initializer {
15+
function __IGovernorCompatibilityBravo_init() internal onlyInitializing {
1616
__IGovernor_init_unchained();
1717
__IGovernorCompatibilityBravo_init_unchained();
1818
}
1919

20-
function __IGovernorCompatibilityBravo_init_unchained() internal initializer {
20+
function __IGovernorCompatibilityBravo_init_unchained() internal onlyInitializing {
2121
}
2222
/**
2323
* @dev Proposal structure from Compound Governor Bravo. Not actually used by the compatibility layer, as

contracts/governance/extensions/GovernorCountingSimpleUpgradeable.sol

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
// SPDX-License-Identifier: MIT
2-
// OpenZeppelin Contracts v4.4.0 (governance/extensions/GovernorCountingSimple.sol)
2+
// OpenZeppelin Contracts v4.4.1 (governance/extensions/GovernorCountingSimple.sol)
33

44
pragma solidity ^0.8.0;
55

@@ -12,14 +12,14 @@ import "../../proxy/utils/Initializable.sol";
1212
* _Available since v4.3._
1313
*/
1414
abstract contract GovernorCountingSimpleUpgradeable is Initializable, GovernorUpgradeable {
15-
function __GovernorCountingSimple_init() internal initializer {
15+
function __GovernorCountingSimple_init() internal onlyInitializing {
1616
__Context_init_unchained();
1717
__ERC165_init_unchained();
1818
__IGovernor_init_unchained();
1919
__GovernorCountingSimple_init_unchained();
2020
}
2121

22-
function __GovernorCountingSimple_init_unchained() internal initializer {
22+
function __GovernorCountingSimple_init_unchained() internal onlyInitializing {
2323
}
2424
/**
2525
* @dev Supported vote types. Matches Governor Bravo ordering.

contracts/governance/extensions/GovernorProposalThresholdUpgradeable.sol

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
// SPDX-License-Identifier: MIT
2-
// OpenZeppelin Contracts v4.4.0 (governance/extensions/GovernorProposalThreshold.sol)
2+
// OpenZeppelin Contracts v4.4.1 (governance/extensions/GovernorProposalThreshold.sol)
33

44
pragma solidity ^0.8.0;
55

@@ -13,14 +13,14 @@ import "../../proxy/utils/Initializable.sol";
1313
* _Deprecated since v4.4._
1414
*/
1515
abstract contract GovernorProposalThresholdUpgradeable is Initializable, GovernorUpgradeable {
16-
function __GovernorProposalThreshold_init() internal initializer {
16+
function __GovernorProposalThreshold_init() internal onlyInitializing {
1717
__Context_init_unchained();
1818
__ERC165_init_unchained();
1919
__IGovernor_init_unchained();
2020
__GovernorProposalThreshold_init_unchained();
2121
}
2222

23-
function __GovernorProposalThreshold_init_unchained() internal initializer {
23+
function __GovernorProposalThreshold_init_unchained() internal onlyInitializing {
2424
}
2525
function propose(
2626
address[] memory targets,

contracts/governance/extensions/GovernorSettingsUpgradeable.sol

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
// SPDX-License-Identifier: MIT
2-
// OpenZeppelin Contracts v4.4.0 (governance/extensions/GovernorSettings.sol)
2+
// OpenZeppelin Contracts v4.4.1 (governance/extensions/GovernorSettings.sol)
33

44
pragma solidity ^0.8.0;
55

@@ -27,7 +27,7 @@ abstract contract GovernorSettingsUpgradeable is Initializable, GovernorUpgradea
2727
uint256 initialVotingDelay,
2828
uint256 initialVotingPeriod,
2929
uint256 initialProposalThreshold
30-
) internal initializer {
30+
) internal onlyInitializing {
3131
__Context_init_unchained();
3232
__ERC165_init_unchained();
3333
__IGovernor_init_unchained();
@@ -38,7 +38,7 @@ abstract contract GovernorSettingsUpgradeable is Initializable, GovernorUpgradea
3838
uint256 initialVotingDelay,
3939
uint256 initialVotingPeriod,
4040
uint256 initialProposalThreshold
41-
) internal initializer {
41+
) internal onlyInitializing {
4242
_setVotingDelay(initialVotingDelay);
4343
_setVotingPeriod(initialVotingPeriod);
4444
_setProposalThreshold(initialProposalThreshold);

contracts/governance/extensions/GovernorTimelockCompoundUpgradeable.sol

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
// SPDX-License-Identifier: MIT
2-
// OpenZeppelin Contracts v4.4.0 (governance/extensions/GovernorTimelockCompound.sol)
2+
// OpenZeppelin Contracts v4.4.1 (governance/extensions/GovernorTimelockCompound.sol)
33

44
pragma solidity ^0.8.0;
55

@@ -94,15 +94,15 @@ abstract contract GovernorTimelockCompoundUpgradeable is Initializable, IGoverno
9494
/**
9595
* @dev Set the timelock.
9696
*/
97-
function __GovernorTimelockCompound_init(ICompoundTimelockUpgradeable timelockAddress) internal initializer {
97+
function __GovernorTimelockCompound_init(ICompoundTimelockUpgradeable timelockAddress) internal onlyInitializing {
9898
__Context_init_unchained();
9999
__ERC165_init_unchained();
100100
__IGovernor_init_unchained();
101101
__IGovernorTimelock_init_unchained();
102102
__GovernorTimelockCompound_init_unchained(timelockAddress);
103103
}
104104

105-
function __GovernorTimelockCompound_init_unchained(ICompoundTimelockUpgradeable timelockAddress) internal initializer {
105+
function __GovernorTimelockCompound_init_unchained(ICompoundTimelockUpgradeable timelockAddress) internal onlyInitializing {
106106
_updateTimelock(timelockAddress);
107107
}
108108

contracts/governance/extensions/GovernorTimelockControlUpgradeable.sol

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
// SPDX-License-Identifier: MIT
2-
// OpenZeppelin Contracts v4.4.0 (governance/extensions/GovernorTimelockControl.sol)
2+
// OpenZeppelin Contracts v4.4.1 (governance/extensions/GovernorTimelockControl.sol)
33

44
pragma solidity ^0.8.0;
55

@@ -31,15 +31,15 @@ abstract contract GovernorTimelockControlUpgradeable is Initializable, IGovernor
3131
/**
3232
* @dev Set the timelock.
3333
*/
34-
function __GovernorTimelockControl_init(TimelockControllerUpgradeable timelockAddress) internal initializer {
34+
function __GovernorTimelockControl_init(TimelockControllerUpgradeable timelockAddress) internal onlyInitializing {
3535
__Context_init_unchained();
3636
__ERC165_init_unchained();
3737
__IGovernor_init_unchained();
3838
__IGovernorTimelock_init_unchained();
3939
__GovernorTimelockControl_init_unchained(timelockAddress);
4040
}
4141

42-
function __GovernorTimelockControl_init_unchained(TimelockControllerUpgradeable timelockAddress) internal initializer {
42+
function __GovernorTimelockControl_init_unchained(TimelockControllerUpgradeable timelockAddress) internal onlyInitializing {
4343
_updateTimelock(timelockAddress);
4444
}
4545

0 commit comments

Comments
 (0)