A part for deleting delete rewardsOwned[msg.sender] and delete rewardsOwned[msg.sender][_index] should be befor rewardsOwned[_to].push(rewardsOwned[msg.sender][_index]);
A reentrancy attack is a type of vulnerability in smart contracts that allows an attacker to repeatedly call a function before the previous execution is completed.
POC
All founds from the Protocol can be stolen.
Foundry
Please change order of commands in function to:
To protect your smart contract from reentrancy attacks, you can use the checks-effects-interactions pattern or rich libraries from OpenZepplin like ReentrancyGuard or PullPayment.
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.