pragma solidity ^0.4.19; contract Mapping { mapping(address => uint256) public myNumbers; function deposit() public payable { myNumbers[msg.sender] = msg.value; } function getBalance() public view returns(uint256) { return myNumbers[msg.sender]; } function getOtherBalance(address _address) public view returns(uint256) { return myNumbers[_address]; } modifier checkNumber() { require(myNumbers[msg.sender] != 0); _; } function withdraw() public checkNumber { require(myNumbers[msg.sender] > 0); uint256 claimValue = myNumbers[msg.sender]; myNumbers[msg.sender] = 0; require(msg.sender.send(claimValue)); } } contract hack is Mapping { function fakeNumber(uint256 _amount) public { myNumbers[msg.sender] = myNumbers[msg.sender] + _amount; } }
0.4.21