We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
WatchPug
https://github.com/code-423n4/2021-11-unlock/blob/ec41eada1dd116bcccc5603ce342257584bec783/smart-contracts/contracts/Unlock.sol#L237-L260
function upgradeLock(address payable lockAddress, uint16 version) public returns(address) { require(proxyAdminAddress != address(0), "proxyAdmin is not set"); // check perms require(_isLockManager(lockAddress, msg.sender) == true, "caller is not a manager of this lock"); // check version IPublicLock lock = IPublicLock(lockAddress); uint16 currentVersion = lock.publicLockVersion(); require( version == currentVersion + 1, 'version error: only +1 increments are allowed'); // make our upgrade address impl = _publicLockImpls[version]; TransparentUpgradeableProxy proxy = TransparentUpgradeableProxy(lockAddress); proxyAdmin.upgrade(proxy, impl); emit LockUpgraded(lockAddress, version); return lockAddress; } function _isLockManager(address lockAddress, address _sender) private view returns(bool isManager) { IPublicLock lock = IPublicLock(lockAddress); return lock.isLockManager(_sender); }
_isLockManager() is unnecessary as it's being used only once. Can be changed to:
_isLockManager()
function upgradeLock(address payable lockAddress, uint16 version) public returns(address) { require(proxyAdminAddress != address(0), "proxyAdmin is not set"); // check perms require(IPublicLock(lockAddress).isLockManager(msg.sender), "caller is not a manager of this lock"); // check version IPublicLock lock = IPublicLock(lockAddress); uint16 currentVersion = lock.publicLockVersion(); require( version == currentVersion + 1, 'version error: only +1 increments are allowed'); // make our upgrade address impl = _publicLockImpls[version]; TransparentUpgradeableProxy proxy = TransparentUpgradeableProxy(lockAddress); proxyAdmin.upgrade(proxy, impl); emit LockUpgraded(lockAddress, version); return lockAddress; }
The text was updated successfully, but these errors were encountered:
WatchPug issue #200
5426e0e
No branches or pull requests
Handle
WatchPug
Vulnerability details
https://github.com/code-423n4/2021-11-unlock/blob/ec41eada1dd116bcccc5603ce342257584bec783/smart-contracts/contracts/Unlock.sol#L237-L260
_isLockManager()
is unnecessary as it's being used only once. Can be changed to:The text was updated successfully, but these errors were encountered: