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,

0 commit comments

Comments
 (0)