The transferReward function checks the index based on the length of the rewardsOwned but it does not check the last reward in the array
In the following line we can see that the requirement is that the index is smaller than the rewardOwned length.
It should check the whole length the same way the claimSingleReward function checks meaning it should be:
This vulnerability kinda breaks the logic of the contract since it doesnt correctly check the full array.
Manual
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.