The distributeRevenue function is responsible for distributing revenue among veRAAC holders and performance fees. It calls the _distributeToGauges function, which iterates over _gaugeList, an unbounded array. If _gaugeList contains too many elements, the function may run out of gas, causing a Denial of Service (DoS) by making the function uncallable.
The function iterates over _gaugeList twice:
First loop: Calculates total gauge weight.
Second loop: Distributes revenue to each gauge.
If _gaugeList contains too many entries, the function may exceed the block gas limit, leading to transaction failure.
If _gaugeList keeps growing indefinitely, any attempt to distribute revenue will fail.
This completely halts revenue distribution, preventing funds from reaching veRAAC holders and gauges.
There is no mechanism to batch or paginate gauge distributions, meaning the function can always fail if _gaugeList becomes too large.
Revenue distribution can become permanently blocked due to excessive gas usage.
Manual Review
Modify _distributeToGauges to process gauges in batches instead of processing them all in a single transaction.
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.