In the _distribute function, the call to the proxy address can throw a false positive if the proxy is not deployed.
If the bytecode of the proxy address is empty the call to that address will not revert. In the case a contest is expired, the address of the proxy holds tokens and the proxy has never been deployed, the call to the proxy address will not revert, givin the executor the false impression that the distribution process has been completed.
The distributionByOwner function is used to distribute tokens to the winner of a contest. The function calls the _distribute function, which calls the proxy address. If the proxy address has never been deployed, the call will not revert. And the executor will assume it has been distributed.
Note: the snippet shows only the relevant code for the test. Full test file can be found here.
Low. The issue can be fixed by using the deployProxyAndDistributeByOwner function.
None.
Verify that the proxy address bytecode is not empty before calling it.
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.