The graduateAndUpgrade() function incorrectly distributes 35% of the total bursary (student fees) to each teacher individually, rather than dividing the 35% among all teachers. This leads to an overpayment and potential drain of the entire bursary balance.
If there are 3 teachers:
Expected: Each teacher should receive ~11.67% of the bursary (35% / 3).
Actual: Each teacher receives 35%, totaling 105%.
Bursary overspending
Failed USDC transfers (if insufficient balance).
Principal receiving less than 5% or nothing at all.
Systemic accounting error and potential exploit vector.
Refactor the payment logic to:
`payPerTeacher` in `graduateAndUpgrade()` is incorrectly calculated.
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.