A malicious contract could exploit a reentrancy vulnerability during NFT withdrawals.
The function performs the external call (NFT transfer) before clearing internal state:
If msg.sender is a contract, it could re-enter withdrawEgg via a fallback/receiver hook before the state is fully cleared.
Could allow multiple withdrawals of the same NFT or manipulation of internal state in an unsafe manner.
Manual review
Use OpenZeppelin's ReentrancyGuard.
Also consider state changes before external calls as an added safeguard
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.