The TokenDivider::claimNft()
transfers NFT ownership using safeTransferFrom()
, but it does not explicitly verify whether the transfer was successful. While OpenZeppelin’s ERC721 guarantees correct behavior, adding an explicit ownership check enhances security and protects against interactions with non-standard ERC721 implementations.
After burning all ERC-20 fractions, the function transfers the NFT. However, it does not verify that msg.sender
successfully became the new owner. In OpenZeppelin’s implementation, safeTransferFrom()
updates ownership before calling onERC721Received()
, so the risk is low. However, if nftAddress
refers to a non-standard ERC721 implementation that does not properly update ownership, the NFT could be lost or remain locked.
Possible issue if interacting with non-compliant or malicious NFT contract that does not correctly update ownership.
Could cause asset loss if a faulty ERC721 implementation allows state updates before ownership transfer completes.
Manual review
To enhance security, add an explicit verification step after safeTransferFrom()
:
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.