Description The contract uses the _mint
function to create new ERC721 tokens, which does not check if the recipient is capable of receiving these types of tokens.
Impact If tokens are minted to a contract that does not implement the onERC721Received
function, they could become permanently locked, leading to loss of tokens.
Proof of Concepts
A smart contract that doesn't support ERC-721 tokens calls the GivingThanks::donate
function
The smart contract receives the NFT
The owner of the contract is not allowed to transfer the NFT from the smart contract.
Recommended mitigation
Add the following changes to the GivingThanks::donate
function.
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.