Missing __gap and reinitialization risk storage collisions and data corruption.
The LevelOne and LevelTwo contracts use UUPSUpgradeable but lack __gap arrays to reserve storage slots. LevelOne has additional variables (schoolFees, reviewTime, reviewCount, lastReviewTime) not in LevelTwo. Future upgrades (e.g., LevelThree) could overwrite these, causing data corruption. LevelTwo’s graduate also fails to reinitialize critical state.
Leads to loss of review data or bursary, breaking the system.
Manual storage layout analysis.
Add uint256[50] private __gap; at the end of both contracts. In LevelTwo’s graduate, reinitialize variables like bursary from LevelOne.
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.