The graduateAndUpgrade()
function can be executed by the principal
without any prior verification that students have been fully reviewed.
This omission allows the session to end and the system to upgrade even with students pending review or with scores below the required minimum.
This breaks an invariant defined in the documentation, which states that "the system upgrade must not occur if any student has not received 4 grades."
Students who have not been reviewed can graduate.
The system can advance to LevelTwo
with an incomplete educational state.
The integrity of the selection process and trust in the evaluation are compromised.
Deploy the LevelOne
contract via proxy.
Six students enroll by paying the tuition fee.
No student receives any reviews (reviewCount == 0
).
The principal
calls graduateAndUpgrade()
with a new implementation (LevelTwo
).
The upgrade completes successfully despite no student being reviewed.
Log:
Manual Review, Foundry
Introduce an internal function checkStudentsEvaluated()
that verifies each student has received exactly 4 reviews before allowing graduation. If any student does not meet the requirement, the function reverts with the error HH__StudentHasNotBeenFullyReviewed()
.
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.