In the function attendPerformance(uint256 performanceId), no checks for the final amount >0 to be minted
Likelihood: HIGH
Reason 1: This will occur whenever the baseReward
or the multiplier
is zero — either due to misconfiguration, malicious input by organizers, or unintended default values in the data structure.
Reason 2: Since there's no lower bound check, the contract could routinely issue zero-token mints, bloating the event logs and potentially misleading users into thinking they were rewarded.
Impact: MEDIUM
Impact 1: Zero-value token mints can lead to unnecessary gas costs, confusing user experience, and noisy logs.
Impact 2: If this logic is paired with frontend incentives or user behavior tracking, it could lead to inconsistent behavior or abuse of UI reward feedback mechanisms.
Vulnerability Summary
Location: FestivalPass.sol
, function attendPerformance(uint256 performanceId)
Line:
Issue: The function does not validate whether the final minting amount is greater than zero.
Type: Missing input validation / economic inefficiency
The following mitigation does:
Stores the final reward in a separate variable
Added check before final amount is to be minted
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.