sherlock-audit / 2022-09-notional-judging

4 stars 2 forks source link

hansfriese - `AuraStakingMixin.claimRewardTokens()` might revert for some edge cases. #112

Closed sherlock-admin closed 1 year ago

sherlock-admin commented 1 year ago

hansfriese

medium

AuraStakingMixin.claimRewardTokens() might revert for some edge cases.

Summary

AuraStakingMixin.claimRewardTokens() might revert for some edge cases.

Vulnerability Detail

AuraStakingMixin.claimRewardTokens() might revert for some edge cases.

Currently, it transfers the feeAmount to FEE_RECEIVER for each rewardToken here.

AURA_REWARD_POOL.getReward(address(this), true);
for (uint256 i; i < numRewardTokens; i++) {
    claimedBalances[i] = rewardTokens[i].balanceOf(address(this)) - claimedBalances[i];

    if (claimedBalances[i] > 0 && feePercentage != 0 && FEE_RECEIVER != address(0)) {
        uint256 feeAmount = claimedBalances[i] * feePercentage / BalancerConstants.VAULT_PERCENT_BASIS;
        rewardTokens[i].checkTransfer(FEE_RECEIVER, feeAmount); //@audit-transfer0
        claimedBalances[i] -= feeAmount;
    }
}

Btw such transfers might revert for some reason.

Impact

claimRewardTokens() might revert for some reason during fee transfer.

Code Snippet

https://github.com/sherlock-audit/2022-09-notional/blob/main/leveraged-vaults/contracts/vaults/balancer/mixins/AuraStakingMixin.sol#L78

Tool used

Manual Review

Recommendation