The SantasList::buyPresent() should be called only by the people with SantaTokens, so anyone EXTRA_NICE but in reality there is no check in the function.
The function SantasList::buyPresent() is used by the EXTRA_NICE people to buy a present for the NAUGHTY one burning the SantaTokens collected from the SantasList::collectPresent() and receiving a second NFT in exchange, but there is no control on the characteristics of the msg.sender and anyone can call it.
Add the following code in SantasListTest.t.sol:
Anyone can see the SantaTokens balance of others and watch for token holders calling after that the SantasList::buyPresent(), burning their tokens without limitations and receiving in exchange an NFT as a present.
Manual review.
Make the following changes:
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.