_withdraw function in Distribution.sol has a logic error in condition that check current time with that of the pool.payoutStart time.
The || OR logic checks allow the code to be proceed when any one of the two condition is met.
The first condition in require is block.timestamp < pool.payoutStart which checks condition to allow for withdrawal where current time is less than the time of pool.payoutStart.
The block.timestamp < pool.payoutStart will allow any user to withdraw their amount at any time before the lock time has ended.
The || OR condition can impact the whole lock time for the pool and disturbing the balance by allowing a staker to withdraw their amount during the lock period.
The recommendation is made to remove the block.timestamp < pool.payoutStart and || OR condition and only check for conditions of second instance in which current time is greater than lock period and stake time.
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.