Description: Although LevelOne::startSession
sets 'cutOffScore', LevelOne::graduateAndUpgrade
never checks whether a student's score meets it. Every student end up treated the same and the '_levelTwo' address is never used to actually bridge or upgrade students.
Impact: Poor-performing students pass automatically and upgrade logic is effectively dead code. Bursary distribution can occur even if no one qualifies, and the 'Graduated' events 'levelTwo' address is never used.
Proof of Concept: Include the following test in the LevelOneAndGraduateTest.t.sol
file:
Recommended Mitigation:
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.