The Checks-Effects-Interactions (CEI) pattern mandates that all state changes (effects) should be completed before any external calls (interactions) are made, to prevent reentrancy vulnerabilities. In FestivalPass.redeemMemorabilia(uint256),
an external call to BeatToken(beatToken).burnFrom occurs before the tokenIdToEdition mapping is updated. Although Slither classifies this as "benign" (meaning it doesn't directly lead to critical asset loss or integrity issues based on current analysis), it still violates the CEI pattern. This can lead to temporary inconsistencies in the contract's state if a re-entering call occurs and attempts to read the tokenIdToEdition mapping before it reflects the final state.
SLITHER OUTPUT:
Likelihood:
This will occur if a malicious msg.sender provides a BeatToken contract (if they have control over its burnFrom callback, which is uncommon for standard ERC20/BEAT tokens) or an ERC1155 receiver contract that implements re-entrant logic in its callbacks (triggered by _mint).
This will occur if a re-entering call reads or depends on the tokenIdToEdition mapping while it still reflects the pre-call state.
Impact:
Potential for state inconsistencies if external logic relies on the un-updated tokenIdToEdition mapping during a re-entry.
While not immediately exploitable for financial gain or asset loss in this specific context, it represents a deviation from best practices that could become problematic if contract logic changes or if combined with other vulnerabilities.
Makes the contract's behavior less predictable under re-entrant conditions.
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.