Files
openzeppelin-contracts/contracts/mocks/ReentrancyMock.sol
Santiago Palladino 1455a5a942 Re-enable solidity coverage
- Upgrade version
- Re-enable in travis.yml
- Move mocks to contracts folder for instrumentation
2017-12-20 18:28:22 -03:00

45 lines
904 B
Solidity

pragma solidity ^0.4.18;
import '../ReentrancyGuard.sol';
import './ReentrancyAttack.sol';
contract ReentrancyMock is ReentrancyGuard {
uint256 public counter;
function ReentrancyMock() public {
counter = 0;
}
function count() private {
counter += 1;
}
function countLocalRecursive(uint256 n) public nonReentrant {
if(n > 0) {
count();
countLocalRecursive(n - 1);
}
}
function countThisRecursive(uint256 n) public nonReentrant {
bytes4 func = bytes4(keccak256("countThisRecursive(uint256)"));
if(n > 0) {
count();
bool result = this.call(func, n - 1);
require(result == true);
}
}
function countAndCall(ReentrancyAttack attacker) public nonReentrant {
count();
bytes4 func = bytes4(keccak256("callback()"));
attacker.callSender(func);
}
function callback() external nonReentrant {
count();
}
}