The LevelOne::graduateAndUpgrade
function can be called by the principal prematurely before the expiry of a school session, The protocol doesn't consider checking the LevelOne::sessionEnd
variable before graduating students and performing other actions like disbursing the shares and upgrading the contracts
At the start of the LevelOne:graduateAndUpgrade function there are no checks if current block.timestamp
is greater than the LevelOne::sessionEnd
which was set while calling LevelOne:startSession
Failure to check LevelOne::sessionEnd
variable when calling the LevelOne::graduateAndUpgrade
function will disrupt the intent of the protocol, which could be exploited by an unfair principal, preventing more potential students from joining a particular school session, in a way this affects the increase in shares of teachers
Manual Review
One of the few Solutions the protocol could do includes adding a check and a custom revert at the start of the function as seen below
`graduateAndUpgrade()` can be called successfully even when the school session has not ended
`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.