In both functions no checks-effects-interactions pattern is followed. If msg.sender is a contract and calls back into the contract via a fallback function or any other malicious logic, it could potentially cause a reentrancy attack, where the contract's balance is repeatedly drained in the same transaction.
Both functions send Ether to msg.sender using .call, which forwards all remaining gas within this line of code
If msg.sender is a contract, it can invoke a reentrancy attack by calling back into this function before the rewardsOwned[msg.sender] array is deleted.
By reentering in both functions, a malicious user/contract could drain the whole balance of the contract.
Manual review
Use the checks-effects-interactions pattern to prevent reentrancy. Specifically, delete the rewards array before making the external call.
Alternatively, use reentrancy guard.
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.