50677 sc insight redundant code in dexaggregatorwrapperwithpredicateproxy impairs readability and potentially increases gas costs
Description
Brief/Intro
Vulnerability Details
1
Redundant vault address validation (multiple checks)
uint256 supportedAssetAmount = _oneInchHelper(
supportedAsset,
address(teller),
executor,
desc,
data,
nativeValueToWrap
);address vaultAddress = address(
TellerWithMultiAssetSupport(payable(teller)).vault()
);
if (vaultAddress == address(0)) {
revert("DexAggregatorWrapper: Invalid vault address for approval");
}
supportedAsset.safeApprove(vaultAddress, supportedAssetAmount);address vaultAddress = address(teller.vault());
if (vaultAddress == address(0)) {
// Handle error: Vault address cannot be zero if we need to transfer shares
revert("DexAggregatorWrapper: Invalid vault address");
}_calcSharesAndEmitEvent(
supportedAsset,
CrossChainTellerBase(address(teller)),
address(desc.srcToken),
desc.amount,
supportedAssetAmount
);// Get vault address
address vaultAddress = address(teller.vault());
if (vaultAddress == address(0)) {
revert("DexAggregatorWrapper: Invalid vault address");
}2
Unnecessary shares recalculation in _calcSharesAndEmitEvent
_calcSharesAndEmitEventshares = teller.deposit(
supportedAsset,
supportedAssetAmount,
minimumMint
);function deposit(
ERC20 depositAsset,
uint256 depositAmount,
uint256 minimumMint
) external requiresAuth nonReentrant returns (uint256 shares)shares = depositAmount.mulDivDown(
ONE_SHARE,
accountant.getRateInQuoteSafe(depositAsset)
);uint256 shares = supportedAssetAmount.mulDivDown(
10 ** teller.vault().decimals(),
AccountantWithRateProviders(teller.accountant()).getRateInQuoteSafe(
supportedAsset
)
);Impact Details
References
Proof of Concept
Proof of Concept
Previous51001 sc insight inaccurate share calculation in emitted event for non bridge depositsNext51276 sc low arctokenpurchase re enabling active token sales causes accounting corruption and token loss
Was this helpful?