The transferFrom function in ERC721Facet.sol always reverts because of caller requirement check.
The transferFrom function in ERC721Facet.sol always reverts because of the check
the function requires msg.sender = from to pass the check. In that case !s.isApprovedForAll[from][msg.sender] will be nothing but !s.isApprovedForAll[msg.sender][msg.sender]
But when we look into the function isApprovedForAll the function sets the owner to operator but not owner to owner or operator to operator. So function transferFrom will always fail.
transferFrom will fail when combining shorts into one because that’s where it’s been used in the codebase. Also it’s even more critical because when combining a short, a check requires the 0 index or first short to combine with to have a valid NFT record that matches the shorter. If an NFT can’t be transferred for any reason, it breaks the check.
VS Code, Manual Review
Remove that check so that operator can call the 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.