System upgrade with function graduateAndUpgrade can occurs even if the session is not ended, breaking Invariant.
The function LevelOne::graduateAndUpgrade does not check if the session is ended.
This means that the upgrade can occurs even if the session is still going, breaking the invariant.
VERY HIGH, it cause an important invariant break and it's likelihood is high too.
Manual review
Consider adding a check in the function LevelOne::graduateAndUpgrade which revert if the session is not ended yet and add the change state of LevelOne::inSession to false in order to consider the session ended.
Proof Of Code:
`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.