Browse Source

Merge pull request #430 from frangio/fix-unchecked-transfer

Use SafeERC20 to transfer tokens safely
Francisco Giordano 8 years ago
parent
commit
07b688a0e6
2 changed files with 7 additions and 3 deletions
  1. 4 2
      contracts/ownership/CanReclaimToken.sol
  2. 3 1
      contracts/token/TokenTimelock.sol

+ 4 - 2
contracts/ownership/CanReclaimToken.sol

@@ -2,6 +2,7 @@ pragma solidity ^0.4.11;
 
 import "./Ownable.sol";
 import "../token/ERC20Basic.sol";
+import "../token/SafeERC20.sol";
 
 /**
  * @title Contracts that should be able to recover tokens
@@ -10,6 +11,7 @@ import "../token/ERC20Basic.sol";
  * This will prevent any accidental loss of tokens.
  */
 contract CanReclaimToken is Ownable {
+  using SafeERC20 for ERC20Basic;
 
   /**
    * @dev Reclaim all ERC20Basic compatible tokens
@@ -17,7 +19,7 @@ contract CanReclaimToken is Ownable {
    */
   function reclaimToken(ERC20Basic token) external onlyOwner {
     uint256 balance = token.balanceOf(this);
-    token.transfer(owner, balance);
+    token.safeTransfer(owner, balance);
   }
 
-}
+}

+ 3 - 1
contracts/token/TokenTimelock.sol

@@ -2,6 +2,7 @@ pragma solidity ^0.4.11;
 
 
 import './ERC20Basic.sol';
+import "../token/SafeERC20.sol";
 
 /**
  * @title TokenTimelock
@@ -9,6 +10,7 @@ import './ERC20Basic.sol';
  * beneficiary to extract the tokens after a given release time
  */
 contract TokenTimelock {
+  using SafeERC20 for ERC20Basic;
 
   // ERC20 basic token contract being held
   ERC20Basic token;
@@ -44,6 +46,6 @@ contract TokenTimelock {
     uint256 amount = token.balanceOf(this);
     require(amount > 0);
 
-    token.transfer(beneficiary, amount);
+    token.safeTransfer(beneficiary, amount);
   }
 }