合约地址:https://etherscan.io/address/0xa0872eE815B8dd0F6937386Fd77134720d953581#code
//bug 没有做任何可转账金额的判断
function transferFrom(address _from, address _to, uint256 _value) public returns (bool success) {
/// same as above
require(_to != 0x0);
require(balances[_from] >= _value);
require(balances[_to] + _value > balances[_to]);
//可以在这里加require( allowed[_from][msg.sender] >= _value)
uint previousBalances = balances[_from] + balances[_to];
balances[_from] -= _value;
balances[_to] += _value;
//或者这里使用safeMath,它会在sub里面进行判断
allowed[_from][msg.sender] -= _value;
Transfer(_from, _to, _value);
assert(balances[_from] + balances[_to] == previousBalances);
return true;
}