There are no checks if the students are below the cutOffScore, which leads to upgrading these students to the next level.
The invariant says:
Any student who doesn't meet the
cutOffScoreshould not be upgraded
However, the cutOffScore is never checked inside LevelOne::graduateAndUpgrade.
The protocol will update to Level Two, even if any of the students are below the cutOffScore, which breaks the invariant quoted above. However, this can be preventing by expelling the student. Hence, leaving it as low-severity.
Manual Review
The easiest way is to make a for-loop which will check if all the students are above the cutOffScore. However, remember that for-loops consume a lot of gas.
All students are graduated when the graduation function is called as the cut-off criteria is not applied.
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.