Move beneficiary zero address check to Ownable (#4531)

Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
Co-authored-by: Francisco <fg@frang.io>
This commit is contained in:
NishantKoyalwar
2023-09-05 01:47:16 +05:30
committed by GitHub
parent 98b83dfbaa
commit e7ba2f7784
5 changed files with 13 additions and 10 deletions

View File

@ -0,0 +1,5 @@
---
'openzeppelin-solidity': patch
---
`Ownable`: Prevent using address(0) as the initial owner.

View File

@ -36,6 +36,9 @@ abstract contract Ownable is Context {
* @dev Initializes the contract setting the address provided by the deployer as the initial owner.
*/
constructor(address initialOwner) {
if (initialOwner == address(0)) {
revert OwnableInvalidOwner(address(0));
}
_transferOwnership(initialOwner);
}

View File

@ -31,11 +31,6 @@ contract VestingWallet is Context, Ownable {
event EtherReleased(uint256 amount);
event ERC20Released(address indexed token, uint256 amount);
/**
* @dev The `beneficiary` is not a valid account.
*/
error VestingWalletInvalidBeneficiary(address beneficiary);
uint256 private _released;
mapping(address token => uint256) private _erc20Released;
uint64 private immutable _start;
@ -46,10 +41,6 @@ contract VestingWallet is Context, Ownable {
* vesting duration of the vesting wallet.
*/
constructor(address beneficiary, uint64 startTimestamp, uint64 durationSeconds) payable Ownable(beneficiary) {
if (beneficiary == address(0)) {
revert VestingWalletInvalidBeneficiary(address(0));
}
_start = startTimestamp;
_duration = durationSeconds;
}

View File

@ -14,6 +14,10 @@ contract('Ownable', function (accounts) {
this.ownable = await Ownable.new(owner);
});
it('rejects zero address for initialOwner', async function () {
await expectRevertCustomError(Ownable.new(constants.ZERO_ADDRESS), 'OwnableInvalidOwner', [constants.ZERO_ADDRESS]);
});
it('has an owner', async function () {
expect(await this.ownable.owner()).to.equal(owner);
});

View File

@ -23,7 +23,7 @@ contract('VestingWallet', function (accounts) {
it('rejects zero address for beneficiary', async function () {
await expectRevertCustomError(
VestingWallet.new(constants.ZERO_ADDRESS, this.start, duration),
'VestingWalletInvalidBeneficiary',
'OwnableInvalidOwner',
[constants.ZERO_ADDRESS],
);
});