A user can lock their SDL for lifetime and she can get rewards for lifetime.
Here is the problematic function:
https://github.com/Cyfrin/2023-12-stake-link/blob/549b2b8c4a5b841686fceb9c311dca9ac58225df/contracts/core/sdlPool/SDLPoolPrimary.sol#L107
After initiating unlock the lockId is not removed from the locks mapping, only just expiry and boostAmount is updated. As a result the lock position stays forever in the protocol even after maxLockingDuration & the effectiveBalance remains same.
Run this test:
The position will remain locked for lifetime as it is not removed while unlocking & as the effectiveBalance is not changed the user will keep getting rewards until the protocol is in production.
Manual analysis.
Remove the lockId from locks mapping by delete locks[lockId] while initiating unlock phase.
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.