Merge pull request #415 from frangio/merge-411-manually
Check that destination of token transfers is not 0x0
This commit is contained in:
@ -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);
|
||||
}
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user