When calling BaseGauge::notifyRewardAmount, the contract does not check that the total amount to be distributed does not exceed the distributionCap limit.
The [distributionCap limit](https://github.com/Cyfrin/2025-02-raac/blob/89ccb062e2b175374d40d824263a4c0b601bcb7f/contracts/core/governance/gauges/BaseGauge.sol#L73) is a protocol invariant that limits the amount that can be distributed in a period:
The problem is that the BaseGauge contract checks against the emission cap instead of distribution cap when a new reward notification is sent at https://github.com/Cyfrin/2025-02-raac/blob/89ccb062e2b175374d40d824263a4c0b601bcb7f/contracts/core/governance/gauges/BaseGauge.sol#L384:
The net effect is that more rewards can be distributed in a period than determined by the project admins, breaking a protocol invariant.
There is a duplicate of the same check at
and
For a POC, add this test to test/unit/core/governance/gauges/BaseGauge.test.js::Ln134:
The protocol invariant that limits the maximum amount to be distributed in a period is broken.
Manual review
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.