Dandy Caramel Tortoise
Medium
Tokens that revert of zero value transfers can cause reverts on liquidation
In the readme the team has mentioned that they would like to know if any wierd token breaks their contract pools
In multiple places token amount which can become zero is transferred without checking the value is zero. This will cause these transactions to revert https://github.com/sherlock-audit/2024-11-teller-finance-update/blob/0c8535728f97d37a4052d2a25909d28db886a422/teller-protocol-v2-audit-2024/packages/contracts/contracts/LenderCommitmentForwarder/extensions/LenderCommitmentGroup/LenderCommitmentGroup_Smart.sol#L699-L727
IERC20(principalToken).safeTransferFrom(
msg.sender,
address(this),
amountDue + tokensToTakeFromSender - liquidationProtocolFee
);
address protocolFeeRecipient = ITellerV2(address(TELLER_V2)).getProtocolFeeRecipient();
IERC20(principalToken).safeTransferFrom(
msg.sender,
address(protocolFeeRecipient),
liquidationProtocolFee
);
totalPrincipalTokensRepaid += amountDue;
tokenDifferenceFromLiquidations += int256(tokensToTakeFromSender - liquidationProtocolFee );
} else {
uint256 tokensToGiveToSender = abs(minAmountDifference);
IERC20(principalToken).safeTransferFrom(
msg.sender,
address(this),
amountDue - tokensToGiveToSender
);
No response
No response
No response
In case liquidation reverts (due to tokensToGiveToSender == -amountDue), the tokenDifferenceFromLiquidations
won't be updated which will cause the value of the shares to be incorrectly high (because in reality the auction is settling at 0 price)
No response
Check if amount is non-zero before transferring