Merge pull request #415 from frangio/merge-411-manually

Check that destination of token transfers is not 0x0
pull/416/head
Francisco Giordano 8 years ago committed by GitHub
commit 5636575327
  1. 2
      contracts/token/BasicToken.sol
  2. 2
      contracts/token/StandardToken.sol
  3. 12
      test/BasicToken.js
  4. 21
      test/StandardToken.js

@ -20,6 +20,8 @@ contract BasicToken is ERC20Basic {
* @param _value The amount to be transferred.
*/
function transfer(address _to, uint256 _value) returns (bool) {
require(_to != address(0));
balances[msg.sender] = balances[msg.sender].sub(_value);
balances[_to] = balances[_to].add(_value);
Transfer(msg.sender, _to, _value);

@ -24,6 +24,8 @@ contract StandardToken is ERC20, BasicToken {
* @param _value uint256 the amount of tokens to be transferred
*/
function transferFrom(address _from, address _to, uint256 _value) returns (bool) {
require(_to != address(0));
var _allowance = allowed[_from][msg.sender];
// Check is not needed because sub(_allowance, _value) will already throw if this condition is not met

@ -22,7 +22,7 @@ contract('BasicToken', function(accounts) {
assert.equal(secondAccountBalance, 100);
});
it("should throw an error when trying to transfer more than balance", async function() {
it('should throw an error when trying to transfer more than balance', async function() {
let token = await BasicTokenMock.new(accounts[0], 100);
try {
let transfer = await token.transfer(accounts[1], 101);
@ -32,4 +32,14 @@ contract('BasicToken', function(accounts) {
}
});
it('should throw an error when trying to transfer to 0x0', async function() {
let token = await BasicTokenMock.new(accounts[0], 100);
try {
let transfer = await token.transfer(0x0, 100);
assert.fail('should have thrown before');
} catch(error) {
assertJump(error);
}
});
});

@ -88,4 +88,25 @@ contract('StandardToken', function(accounts) {
})
});
it('should throw an error when trying to transfer to 0x0', async function() {
let token = await StandardTokenMock.new(accounts[0], 100);
try {
let transfer = await token.transfer(0x0, 100);
assert.fail('should have thrown before');
} catch(error) {
assertJump(error);
}
});
it('should throw an error when trying to transferFrom to 0x0', async function() {
let token = await StandardTokenMock.new(accounts[0], 100);
await token.approve(accounts[1], 100);
try {
let transfer = await token.transferFrom(accounts[0], 0x0, 100, {from: accounts[1]});
assert.fail('should have thrown before');
} catch(error) {
assertJump(error);
}
});
});

Loading…
Cancel
Save