[audit]#7 check dodo exist in dodoETHProxy
This commit is contained in:
@@ -15,7 +15,6 @@ import {IDODOZoo} from "./intf/IDODOZoo.sol";
|
|||||||
import {IERC20} from "./intf/IERC20.sol";
|
import {IERC20} from "./intf/IERC20.sol";
|
||||||
import {IWETH} from "./intf/IWETH.sol";
|
import {IWETH} from "./intf/IWETH.sol";
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @title DODO Eth Proxy
|
* @title DODO Eth Proxy
|
||||||
* @author DODO Breeder
|
* @author DODO Breeder
|
||||||
@@ -68,6 +67,7 @@ contract DODOEthProxy is ReentrancyGuard {
|
|||||||
) external payable preventReentrant returns (uint256 receiveTokenAmount) {
|
) external payable preventReentrant returns (uint256 receiveTokenAmount) {
|
||||||
require(msg.value == ethAmount, "ETH_AMOUNT_NOT_MATCH");
|
require(msg.value == ethAmount, "ETH_AMOUNT_NOT_MATCH");
|
||||||
address DODO = IDODOZoo(_DODO_ZOO_).getDODO(_WETH_, quoteTokenAddress);
|
address DODO = IDODOZoo(_DODO_ZOO_).getDODO(_WETH_, quoteTokenAddress);
|
||||||
|
require(DODO != address(0), "DODO_NOT_EXIST");
|
||||||
receiveTokenAmount = IDODO(DODO).querySellBaseToken(ethAmount);
|
receiveTokenAmount = IDODO(DODO).querySellBaseToken(ethAmount);
|
||||||
require(receiveTokenAmount >= minReceiveTokenAmount, "RECEIVE_NOT_ENOUGH");
|
require(receiveTokenAmount >= minReceiveTokenAmount, "RECEIVE_NOT_ENOUGH");
|
||||||
IWETH(_WETH_).deposit{value: ethAmount}();
|
IWETH(_WETH_).deposit{value: ethAmount}();
|
||||||
@@ -84,6 +84,7 @@ contract DODOEthProxy is ReentrancyGuard {
|
|||||||
uint256 maxPayTokenAmount
|
uint256 maxPayTokenAmount
|
||||||
) external preventReentrant returns (uint256 payTokenAmount) {
|
) external preventReentrant returns (uint256 payTokenAmount) {
|
||||||
address DODO = IDODOZoo(_DODO_ZOO_).getDODO(_WETH_, quoteTokenAddress);
|
address DODO = IDODOZoo(_DODO_ZOO_).getDODO(_WETH_, quoteTokenAddress);
|
||||||
|
require(DODO != address(0), "DODO_NOT_EXIST");
|
||||||
payTokenAmount = IDODO(DODO).queryBuyBaseToken(ethAmount);
|
payTokenAmount = IDODO(DODO).queryBuyBaseToken(ethAmount);
|
||||||
require(payTokenAmount <= maxPayTokenAmount, "PAY_TOO_MUCH");
|
require(payTokenAmount <= maxPayTokenAmount, "PAY_TOO_MUCH");
|
||||||
_transferIn(quoteTokenAddress, msg.sender, payTokenAmount);
|
_transferIn(quoteTokenAddress, msg.sender, payTokenAmount);
|
||||||
@@ -102,6 +103,7 @@ contract DODOEthProxy is ReentrancyGuard {
|
|||||||
{
|
{
|
||||||
require(msg.value == ethAmount, "ETH_AMOUNT_NOT_MATCH");
|
require(msg.value == ethAmount, "ETH_AMOUNT_NOT_MATCH");
|
||||||
address DODO = IDODOZoo(_DODO_ZOO_).getDODO(_WETH_, quoteTokenAddress);
|
address DODO = IDODOZoo(_DODO_ZOO_).getDODO(_WETH_, quoteTokenAddress);
|
||||||
|
require(DODO != address(0), "DODO_NOT_EXIST");
|
||||||
IWETH(_WETH_).deposit{value: ethAmount}();
|
IWETH(_WETH_).deposit{value: ethAmount}();
|
||||||
IWETH(_WETH_).approve(DODO, ethAmount);
|
IWETH(_WETH_).approve(DODO, ethAmount);
|
||||||
IDODO(DODO).depositBaseTo(msg.sender, ethAmount);
|
IDODO(DODO).depositBaseTo(msg.sender, ethAmount);
|
||||||
|
|||||||
Reference in New Issue
Block a user