The transfer of rewards is not checked in theLiquidationPool.sol
::claimRewards()
which leads to users losing their rewards on failure.
The ERC20 transfer function does not indicate failure by throwing an error but rather by returning false. It's good practice to check the return value of transfer and handle the failure case. transfer can return false on failure, which should be checked.
If the transfer fails but the contract proceeds as if it was successful (e.g., updating balances, deleting claims), the contract's state could be inconsistent with the actual token balances. users also will not receive their rewards.
Manual Review
this check should be added to the code
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.