Raisebox Faucet

First Flight #50
Beginner FriendlySolidity
100 EXP
View results
Submission Details
Impact: low
Likelihood: low
Invalid

No check for zero amount in burnFaucetTokens

Low: Missing zero amount check

Description

function burnFaucetTokens can be called with zero amount.

function burnFaucetTokens(uint256 amountToBurn) public onlyOwner {
// @> Missing check for zero amount
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);
}

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;
// call with 0 amount and no revert happens
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);
}
Updates

Lead Judging Commences

inallhonesty Lead Judge 16 days ago
Submission Judgement Published
Invalidated
Reason: Non-acceptable severity

Support

FAQs

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