Description: In function graduateAndUpgrade there is no check if the school is in a session or not. This makes it able for the protocol to be upgraded even if the school session has not started yet, breaking one of the protocol's invariants (actually more than just one).
Impact: Protocol can be upgraded even if the school session has not started yet, which is not intended.
Proof of Concept: As we can see the session status is false, meaning the school is not in session, and we can still call graduateAndUpgrade without fail.
Recommended Mitigation: Add a check in graduateAndUpgrade to see if school is in session or not.
`graduateAndUpgrade()` can be called successfully even when the school session has not ended
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.