Low: Missing zero amount check
Description
function burnFaucetTokens can be called with zero amount.
function burnFaucetTokens(uint256 amountToBurn) public onlyOwner {
require(amountToBurn <= balanceOf(address(this)), "Faucet Token Balance: Insufficient");
_transfer(address(this), msg.sender, balanceOf(address(this)));
_burn(msg.sender, amountToBurn);
}
Risk
Likelihood: Low
Edge case when mistakenly zero is send as amount.
Impact:
Can cause confusion in edge cases when zero is send and noe revers appear.
Proof of Concept
The function do not revert when zero is passed as amountToBurn.
function testBurnFaucetTokens() public {
uint256 amountToBurn = 0;
vm.prank(owner);
raiseBoxFaucet.burnFaucetTokens(amountToBurn);
}
Recommended Mitigation
Add check for zero amount.
function burnFaucetTokens(uint256 amountToBurn) public onlyOwner {
+ require(amountToBurn > 0, "Zero amount not allowed");
require(amountToBurn <= balanceOf(address(this)), "Faucet Token Balance: Insufficient");
// transfer faucet balance to owner first before burning
// ensures owner has a balance before _burn (owner only function) can be called successfully
_transfer(address(this), msg.sender, balanceOf(address(this)));
_burn(msg.sender, amountToBurn);
}