claimAttackerBounty allows a zero-value call to succeed and emit a misleading event leading to confusing on-chain history / event log noiseIf freeBalance == 0 (e.g. called again immediately after a prior call already swept the full entitlement out, or in some griefing sequence where the pool balance is transiently empty), payout computes to 0. The function does not revert in this case — it falls through, skips the payout > 0 block (so no state-corrupting side effect occurs), and still emits AttackerBountyClaimed(attacker, 0, bountyClaimed, bountyEntitlement).
Likelihood:
Low. Requires a specific balance/timing condition (attacker calling again after already fully or partially claiming and the pool balance being at or near zero).
Impact:
Low / informational. No funds move, no accounting error
Simple PoC showing the minor issue.
Add an explicit revert when there is nothing to pay out
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.
The contest is complete and the rewards are being distributed.