Browse Source

Merge pull request #1647 from nventuro/safeerc20-bugfix

Fix SafeERC20.safeApprove bug

(cherry picked from commit 3111291b4a8928a385b7993e32daf84fa3217f13)
Nicolás Venturo 6 years ago
parent
commit
2648206394
2 changed files with 5 additions and 5 deletions
  1. 4 4
      contracts/mocks/SafeERC20Helper.sol
  2. 1 1
      contracts/token/ERC20/SafeERC20.sol

+ 4 - 4
contracts/mocks/SafeERC20Helper.sol

@@ -24,7 +24,7 @@ contract ERC20FailingMock {
 }
 
 contract ERC20SucceedingMock {
-  uint256 private _allowance;
+  mapping (address => uint256) private _allowances;
 
   function transfer(address, uint256) public returns (bool) {
     return true;
@@ -39,11 +39,11 @@ contract ERC20SucceedingMock {
   }
 
   function setAllowance(uint256 allowance_) public {
-    _allowance = allowance_;
+    _allowances[msg.sender] = allowance_;
   }
 
-  function allowance(address, address) public view returns (uint256) {
-    return _allowance;
+  function allowance(address owner, address) public view returns (uint256) {
+    return _allowances[owner];
   }
 }
 

+ 1 - 1
contracts/token/ERC20/SafeERC20.sol

@@ -44,7 +44,7 @@ library SafeERC20 {
     // safeApprove should only be called when setting an initial allowance, 
     // or when resetting it to zero. To increase and decrease it, use 
     // 'safeIncreaseAllowance' and 'safeDecreaseAllowance'
-    require((value == 0) || (token.allowance(msg.sender, spender) == 0));
+    require((value == 0) || (token.allowance(address(this), spender) == 0));
     require(token.approve(spender, value));
   }