Unbounded loops in GaugeController.sol create a Denial of Service (DoS) risk, as excessive gas costs can halt execution.
The functions distributeRevenue() and calculateGaugeWeight() iterate over _gaugeList.length without any size limit.
If _gaugeList grows too large, the gas cost may exceed the block limit, permanently bricking these functions.
Since distributeRevenue() controls revenue distribution to liquidity gauges, a DoS attack could freeze gauge rewards.
GaugeController.sol contains unbounded loops that attackers can exploit to create Denial of Service (DoS).
The attacker adds a large number of gauges to _gaugeList[].
Calls distributeRevenue(), which fails due to excessive gas use.
Revenue distribution is halted for all users.
Protocol halts due to excessive gas costs.
Liquidity providers stop receiving revenue.
Governance functions become inoperable.
Locked protocol funds: Revenue cannot be distributed to liquidity providers.
Protocol halt: Governance functions requiring gauge weight calculations become unusable.
Bricking risk: A large _gaugeList can make functions fail permanently.
Slither for loop complexity analysis
Manual Review of GaugeController.sol
Implement batch processing to break large loops into multiple transactions.
Limit _gaugeList size or optimize data structures for efficiency.
Use gas-efficient data access patterns like mapping lookups instead of full iteration.
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.