Expelled students can re-enroll after being removed, which defeats the purpose of the expulsion mechanism.
The contract only removes the student from the isStudent mapping in expel():
There is no tracking of previously expelled addresses, allowing expelled students to call enroll() again.
This allows malicious or previously removed users to rejoin the system without restriction, violating business rules.
Manual code review.
Introduce a permanent expulsion flag:
Update expel():
And enroll():
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.