From 7c6034db674a75d27d58abfb30317ae2cbedf465 Mon Sep 17 00:00:00 2001 From: The3D Date: Wed, 23 Sep 2020 12:57:48 +0200 Subject: [PATCH 1/3] Fixes the flashloan transferFrom() --- contracts/lendingpool/LendingPool.sol | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contracts/lendingpool/LendingPool.sol b/contracts/lendingpool/LendingPool.sol index 95af83b1..d16d6ec3 100644 --- a/contracts/lendingpool/LendingPool.sol +++ b/contracts/lendingpool/LendingPool.sol @@ -575,7 +575,7 @@ contract LendingPool is VersionedInitializable, ILendingPool, LendingPoolStorage vars.amountPlusPremium = amount.add(vars.premium); if (debtMode == ReserveLogic.InterestRateMode.NONE) { - IERC20(asset).transferFrom(receiverAddress, vars.aTokenAddress, vars.amountPlusPremium); + IERC20(asset).safeTransferFrom(receiverAddress, vars.aTokenAddress, vars.amountPlusPremium); reserve.updateState(); reserve.cumulateToLiquidityIndex(IERC20(vars.aTokenAddress).totalSupply(), vars.premium); From d724d1f58f88537d05c55d7661d80e87a6f87ffb Mon Sep 17 00:00:00 2001 From: The3D Date: Wed, 23 Sep 2020 14:39:17 +0200 Subject: [PATCH 2/3] Fixed comment --- contracts/lendingpool/LendingPool.sol | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/contracts/lendingpool/LendingPool.sol b/contracts/lendingpool/LendingPool.sol index d16d6ec3..6afb3eed 100644 --- a/contracts/lendingpool/LendingPool.sol +++ b/contracts/lendingpool/LendingPool.sol @@ -583,7 +583,8 @@ contract LendingPool is VersionedInitializable, ILendingPool, LendingPoolStorage emit FlashLoan(receiverAddress, asset, amount, vars.premium, referralCode); } else { - // If the transfer didn't succeed, the receiver either didn't return the funds, or didn't approve the transfer. + //if the user didn't choose to return the funds, the system checks if there + //is enough collateral and eventually open a position _executeBorrow( ExecuteBorrowParams( asset, From 4e25657731da17bd854707a0ef0f52823add0b81 Mon Sep 17 00:00:00 2001 From: The3D Date: Wed, 23 Sep 2020 15:19:21 +0200 Subject: [PATCH 3/3] Updated transferFrom in repayWithCollateral() and swapLiquidity() --- contracts/lendingpool/LendingPoolCollateralManager.sol | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/contracts/lendingpool/LendingPoolCollateralManager.sol b/contracts/lendingpool/LendingPoolCollateralManager.sol index fab8b71f..fad590be 100644 --- a/contracts/lendingpool/LendingPoolCollateralManager.sol +++ b/contracts/lendingpool/LendingPoolCollateralManager.sol @@ -404,7 +404,7 @@ contract LendingPoolCollateralManager is VersionedInitializable, LendingPoolStor vars.actualAmountToLiquidate, 0 ); - IERC20(principal).transferFrom(receiver, vars.principalAToken, vars.actualAmountToLiquidate); + IERC20(principal).safeTransferFrom(receiver, vars.principalAToken, vars.actualAmountToLiquidate); if (vars.userVariableDebt >= vars.actualAmountToLiquidate) { IVariableDebtToken(debtReserve.variableDebtTokenAddress).burn( @@ -504,7 +504,7 @@ contract LendingPoolCollateralManager is VersionedInitializable, LendingPoolStor vars.amountToReceive = IERC20(toAsset).balanceOf(receiverAddress); if (vars.amountToReceive != 0) { - IERC20(toAsset).transferFrom( + IERC20(toAsset).safeTransferFrom( receiverAddress, address(vars.toReserveAToken), vars.amountToReceive