The graduateAndUpgrade function allows the system upgrade to take place without verifying if the school session has ended, even though the protocol requires the notYetInSession modifier to prevent upgrades during an active session. This modifier is not being used in the graduateAndUpgrade function, which could lead to upgrades occurring during an ongoing session.
The notYetInSession modifier is already defined in the contract:
This modifier is intended to prevent upgrades when the system is still in session.
However, it is not applied in the graduateAndUpgrade function, which allows the upgrade to proceed regardless of the session state. As a result, the upgrade can be triggered during an active session, violating the intended protocol rule.
The protocol’s integrity is compromised if upgrades occur during an ongoing session.
Students may be upgraded before the session has ended, which could allow premature changes or access to new functionalities.
This could lead to unintended behavior or exploits if the upgrade logic is not correctly gated by the session state.
`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.