Since the bot report did not mention the issue location and nature of issue, we are submitting this again.
There are certain smart contracts that do not support ERC721, using _transfer()
may result in the NFT being sent to such contracts.
* @dev Safely transfers `tokenId` token from `from` to `to`, checking that contract recipients
* are aware of the ERC-721 standard to prevent tokens from being forever locked.
*
* `data` is additional data, it has no specified format and it is sent in call to `to`.
*
* This internal function is like {safeTransferFrom} in the sense that it invokes
* {IERC721Receiver-onERC721Received} on the receiver, and can be used to e.g.
* implement alternative mechanisms to perform token transfer, such as signature-based.
*
As shown above, the function withdrawMaxAndTransfer
is used to withdraw the ERC20 tokens to the current NFT owner and then this owner transfers the NFT to the new owner - newRecipient.
This function uses the ERC721._transfer to transfer the NFT.
The NFT may get stuck in the contract that does support ERC721.
Manual review
Consider using _safeTransfer()
instead of _transfer()
.
https://docs.codehawks.com/hawks-auditors/how-to-determine-a-finding-validity
https://docs.codehawks.com/hawks-auditors/how-to-determine-a-finding-validity
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.