Ensure AccessControlDefaultAdminRules's initialDefaultAdmin is non-zero (#4220)

Co-authored-by: Ernesto García <ernestognw@gmail.com>
This commit is contained in:
Hadrien Croubois
2023-05-05 21:31:23 +02:00
committed by GitHub
parent dcba9f995f
commit 72ed4ca67a
2 changed files with 9 additions and 1 deletions

View File

@ -53,6 +53,7 @@ abstract contract AccessControlDefaultAdminRules is IAccessControlDefaultAdminRu
* @dev Sets the initial values for {defaultAdminDelay} and {defaultAdmin} address. * @dev Sets the initial values for {defaultAdminDelay} and {defaultAdmin} address.
*/ */
constructor(uint48 initialDelay, address initialDefaultAdmin) { constructor(uint48 initialDelay, address initialDefaultAdmin) {
require(initialDefaultAdmin != address(0), "AccessControl: 0 default admin");
_currentDelay = initialDelay; _currentDelay = initialDelay;
_grantRole(DEFAULT_ADMIN_ROLE, initialDefaultAdmin); _grantRole(DEFAULT_ADMIN_ROLE, initialDefaultAdmin);
} }

View File

@ -1,4 +1,4 @@
const { time } = require('@openzeppelin/test-helpers'); const { time, constants, expectRevert } = require('@openzeppelin/test-helpers');
const { const {
shouldBehaveLikeAccessControl, shouldBehaveLikeAccessControl,
shouldBehaveLikeAccessControlDefaultAdminRules, shouldBehaveLikeAccessControlDefaultAdminRules,
@ -13,6 +13,13 @@ contract('AccessControlDefaultAdminRules', function (accounts) {
this.accessControl = await AccessControlDefaultAdminRules.new(delay, accounts[0], { from: accounts[0] }); this.accessControl = await AccessControlDefaultAdminRules.new(delay, accounts[0], { from: accounts[0] });
}); });
it('initial admin not zero', async function () {
await expectRevert(
AccessControlDefaultAdminRules.new(delay, constants.ZERO_ADDRESS),
'AccessControl: 0 default admin',
);
});
shouldBehaveLikeAccessControl('AccessControl', ...accounts); shouldBehaveLikeAccessControl('AccessControl', ...accounts);
shouldBehaveLikeAccessControlDefaultAdminRules('AccessControl', delay, ...accounts); shouldBehaveLikeAccessControlDefaultAdminRules('AccessControl', delay, ...accounts);
}); });