LevelOne::graduateAndUpgrade
does not change the implementation address to LevelTwo
contract, resulting in the school system remaining in LevelOne
, causing students to be unable to graduate and breaking core protocol functionality
ERC1967
contains upgradeToAndCall
and _setImplementation
functions which helps to change the implementation address of the proxy. However, these functions are not called in LevelOne::graduateAndUpgrade
, resulting in the proxy
contract still pointing to the LevelOne
implementation contract instead of LevelTwo
implementation contract.
Place the following into LevelOne|AndGraduateTest.t.sol
and run
forge test --mt testGraduateDoesNotGoToLevelTwo
Impact: High, students are unable to graduate, breaking core protocol functionality
Likelihood: High, principal will upgrade school system at the end of school session (after 4 weeks)
Severity: High
Manual review
Make the following modifications
LevelOne::graduateAndUpgrade
LevelTwo
The system doesn't implement UUPS properly.
The system doesn't implement UUPS properly.
The system doesn't implement UUPS properly.
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.