The returned values of functions like transfer
, transferFrom
and approve
are not checked.
The functions Staking::deposit
, Staking::withdraw
, Staking::claimRewards
and Airdrop::claim
call transfer
and transferFrom
in order to transfer tokens from/to msg.sender
, stakingContract
, stakingVault
. But it is not checked if these functions are correclty executed:
Additionally, in the LoveToken::initVault
is used approve
function to approve amount of tokens. But the returned value from this function is not checked. If the approvement is not successful, the protocol would not work as intended.
If some of the stakingVault
, stakingContract
or msg.sender
doesn't have enough balance, the transaction will revert with due Reason: panic: arithmetic underflow or overflow
. But the user may not uderstand why this is happened.
And if the LoveToken::initVault
doesn't succeed to initiate properly the Staking
and Airdrop
contracts, the functionality of the protocol will be broken.
If the approve
function fails and does not return true, it means that the allowance was not set correctly. Since the return value of this function is not checked in the LoveToken::initVault
constructor, the contract deployment will proceed as if the allowance was set correctly. This could lead to serious issues later on when the Staking
and Airdrop
contracts try to transfer tokens from the stakingVault
and airdropVault
. If the allowance was not set correctly, these transfer operations will fail, but the contract has no way of knowing this in advance because the return value of the approve
function was not checked.
Manual Review
Add a check with meaningfull error message in the functions Staking::deposit
, Staking::withdraw
, Staking::claimRewards
to ensure that the contract that transfer tokens has enough amount and check the returned value from the transfer
and transferFrom
functions.
Also, check of the return value of the transfer
and transferFrom
functions is required in Airdrop::claim
function and in Lovetoken::initVault
for the approve
function.
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.