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

Missing Input Validation in `setOwner()` and `setRewardAdmin()` Function

Summary

The setOwner() and setRewardAdmin() functions in the FjordStaking contract lack proper input validation,allowing unnecessary state changes and gas consumption.

Vulnerability Details

The setOwner() and setRewardAdmin() functions check agianst address zero, but they don't check if the new address being set is different from the current one. This allows transactions to be executed even when they don't change the contract's state, leading to unnecessary gas consumption.

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;
}

Impact

unnecessary gas consumption for the owner when executing these functions.

Tools Used

Manual Review

Recommendations

implement a check in both functions to ensure the new address is different from the current one before making any changes

function setOwner(address _newOwner) external onlyOwner {
require(_newOwner != owner, "New owner must be different from current owner");
owner = _newOwner;
emit OwnerSet(_newOwner);
}
function setRewardAdmin(address _newRewardAdmin) external onlyOwner {
require(_newRewardAdmin != rewardAdmin, "New reward admin must be different from current reward admin");
rewardAdmin = _newRewardAdmin;
emit RewardAdminSet(_newRewardAdmin);
}
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.