DeFiFoundry
20,000 USDC
View results
Submission Details
Severity: low
Invalid

Lack of current address check before setting a new address

Summary

Lack of current address check before setting a new address.

Vulnerability Details

function setOwner(address _newOwner) external onlyOwner {
if (_newOwner == address(0)) revert InvalidZeroAddress();
owner = _newOwner;
}
function setRewardAdmin(address _rewardAdmin) external onlyOwner {
if (_rewardAdmin == address(0)) revert InvalidZeroAddress();
rewardAdmin = _rewardAdmin;
}
function addAuthorizedSablierSender(address _address) external onlyOwner {
authorizedSablierSenders[_address] = true;
}

https://github.com/Cyfrin/2024-08-fjord/blob/0312fa9dca29fa7ed9fc432fdcd05545b736575d/src/FjordStaking.sol#L347C5-L359C6

In the provided functions setOwner, setRewardAdmin, and addAuthorizedSablierSender, there is no check to determine if the new address being set is the same as the current address.

Impact

If a function is called with the same address that is already set, it will still execute the state change operation, consuming gas unnecessarily.

Tools Used

Manual review

Recommendations

Implement a check in each function to compare the new address with the current address before proceeding with the state change. For example:

function setOwner(address _newOwner) external onlyOwner {
if (_newOwner == address(0)) revert InvalidZeroAddress();
if (_newOwner == owner) revert NoChangeInAddress();
owner = _newOwner;
}
function setRewardAdmin(address _rewardAdmin) external onlyOwner {
if (_rewardAdmin == address(0)) revert InvalidZeroAddress();
if (_rewardAdmin == rewardAdmin) revert NoChangeInAddress();
rewardAdmin = _rewardAdmin;
}
function addAuthorizedSablierSender(address _address) external onlyOwner {
if (authorizedSablierSenders[_address]) revert AlreadyAuthorized();
authorizedSablierSenders[_address] = true;
}
Updates

Lead Judging Commences

inallhonesty Lead Judge about 1 year ago
Submission Judgement Published
Invalidated
Reason: Non-acceptable severity

Support

FAQs

Can't find an answer? Chat with us on Discord, Twitter or Linkedin.