buyPresent
can be called to trade 1e18
of SantaToken
for an NFT according to the actual code.
buyPresent()
functions takes one parameter which is presentReceiver
. The function can be called by anyone and it burns 1e18 SantaToken from whoever the presentReceiver
is.
So anyone can call the buyPresent()
function and burns some other user's SantaToken and mints himself an NFT.
manual code review
foundry
If the buyPresent()
function should work according to the explanation in the contest documents i.e. to trade tokens with NFTs
in that case the recommendation can be to remove the presentReceiver
argument from the buyPresent()
function and add msg.sender
as an argument to burn
function like below:
Current implementation allows a malicious actor to burn someone else's tokens as the burn function doesn't actually check for approvals.
The contest is live. Earn rewards by submitting a finding.
This is your time to appeal against judgements on your submissions.
Appeals are being carefully reviewed by our judges.