The graduateAndUpgrade function has a potential DoS vulnerability which is due to unbounded loop operations used to distribute USDC payments to teachers.
If the list is too long or if any transfer fails, the function will revert, and execution and upgrades will be blocked.
Root Cause
Unbounded Loop in graduateAndUpgrade() function leads to potential DoS (Denial of Service)
The graduateAndUpgrade() function loops through listOfTeachers with no upper limit on array size.
Single Point of Failure
If there is a transfer failure (even a single one), due to a blacklisted address (teacher or principal), the whole transaction reverts.
Contract upgrade is blocked.
Permanent Denial of Service.
Teachers and the principal cannot receive their payments.
Principal unable to execute critical upgrades
Manual Review
Use OpenZeppelin's ReentrancyGuard:
Make use of a Pull payment system:
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.