Commit 7100e30b by Manuel Araoz

Implement VestedToken bug mitigation #3

parent a62621eb
...@@ -8,6 +8,9 @@ import "./LimitedTransferToken.sol"; ...@@ -8,6 +8,9 @@ import "./LimitedTransferToken.sol";
* @dev Tokens that can be vested for a group of addresses. * @dev Tokens that can be vested for a group of addresses.
*/ */
contract VestedToken is StandardToken, LimitedTransferToken { contract VestedToken is StandardToken, LimitedTransferToken {
uint256 MAX_GRANTS_PER_ADDRESS = 20;
struct TokenGrant { struct TokenGrant {
address granter; // 20 bytes address granter; // 20 bytes
uint256 value; // 32 bytes uint256 value; // 32 bytes
...@@ -45,6 +48,8 @@ contract VestedToken is StandardToken, LimitedTransferToken { ...@@ -45,6 +48,8 @@ contract VestedToken is StandardToken, LimitedTransferToken {
throw; throw;
} }
if (tokenGrantsCount(_to) > MAX_GRANTS_PER_ADDRESS) throw; // To prevent a user being spammed and have his balance locked (out of gas attack when calculating vesting).
uint count = grants[_to].push( uint count = grants[_to].push(
TokenGrant( TokenGrant(
_revokable ? msg.sender : 0, // avoid storing an extra 20 bytes when it is non-revokable _revokable ? msg.sender : 0, // avoid storing an extra 20 bytes when it is non-revokable
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment