Beginner FriendlyFoundry
100 EXP
View results
Submission Details
Severity: medium
Valid

SantasList buyPresent doesn't burn the right amount of eth

Summary

when buyPresent() in SantasList calls i_santaToken.burn(), the burn function only burns 1e18. When a user buys a present the present costs 2e18 so 2e18 should be burned when this function is called.

Vulnerability Details

Allows user to get an NFT for cheaper by only paying 1e18

Impact

Users could manipulate this to be able to buy presents for more people because its cheaper

Tools Used

Manual Review

Recommendations

adapt the code for burn() in SantaToken

function burn(address from) external {
if (msg.sender != i_santasList) {
revert SantaToken__NotSantasList();
}
- _burn(from, 1e18);
+ _burn(from, 2e18);
}
Updates

Lead Judging Commences

inallhonesty Lead Judge
over 1 year ago
inallhonesty Lead Judge over 1 year ago
Submission Judgement Published
Validated
Assigned finding tags:

Price is not enforced in buyPresent

This line indicates that the intended cost of presents for naughty people should be 2e18: https://github.com/Cyfrin/2023-11-Santas-List/blob/6627a6387adab89ae2ba2e82b38296723261c08a/src/SantasList.sol#L87 PURCHASE_PRESENT_COST should be implemented to enforce the cost of presents.

Support

FAQs

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