Depending on the level of confidence on the principal, there is a possibility of wage manipulation. The principal can remove teachers before the LevelOne::graduateAndUpgrade function is called. This can lead to a situation where he can still receive his wage, while the teachers do not receive their wages even if they have participated to the session. Therefore, the principal can manipulate the system and evade their responsibilities.
This issue can bring unfairness to the system and can lead to a situation where the principal can manipulate the system to their advantage. This can lead to a loss of trust in the system and can lead to potential financial losses for the teachers.
Principal prepares the next upgrades after the session end.
Principal removes teachers and graduates to LevelTwo before the LevelOne::graduateAndUpgrade function is called.
The principal receives their wage.
The contract balance is updated correctly, but the teachers do not receive their wages.
See the following test case for the PoC:
Manual review.
Ensure that the removeTeacher function is not callable in this specific case. This can be done by adding a check to ensure that the removeTeacher function is not called after the sessionEnd and before the LevelOne::graduateAndUpgrade function is called. This will ensure that the teachers are not removed before the wages are shared and that the system is not manipulated. Any means possible to ensure confidence on the protocol.
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.