mirror of https://github.com/crytic/slither
Merge pull request #738 from crytic/dev-test-reentrancy-benign
Added tests for reentrancy-benign detectorpull/756/head
commit
08b87c4aff
@ -0,0 +1,61 @@ |
||||
pragma solidity ^0.4.0; |
||||
|
||||
contract ReentrancyBenign { |
||||
uint8 anotherVariableToChange; |
||||
uint8 counter = 0; |
||||
|
||||
function bad0() public { |
||||
if (!(msg.sender.call())) { |
||||
revert(); |
||||
} |
||||
counter += 1; |
||||
} |
||||
|
||||
function bad1(address target) public { |
||||
(bool success) = target.call(); |
||||
require(success); |
||||
counter += 1; |
||||
} |
||||
|
||||
function bad2(address target) public { |
||||
(bool success) = target.call(); |
||||
if (success) { |
||||
address(target).call.value(1000)(); |
||||
counter += 1; |
||||
} |
||||
else { |
||||
revert(); |
||||
} |
||||
} |
||||
|
||||
function bad3(address target) public { |
||||
externalCaller(target); |
||||
varChanger(); |
||||
ethSender(target); |
||||
} |
||||
|
||||
function bad4(address target) public { |
||||
externalCaller(target); |
||||
ethSender(address(0)); |
||||
varChanger(); |
||||
address(target).call.value(2)(); |
||||
} |
||||
|
||||
function bad5(address target) public { |
||||
ethSender(address(0)); |
||||
varChanger(); |
||||
ethSender(address(0)); |
||||
} |
||||
|
||||
function externalCaller(address target) private { |
||||
address(target).call(); |
||||
} |
||||
|
||||
function ethSender(address target) private { |
||||
address(target).call.value(1)(); |
||||
} |
||||
|
||||
function varChanger() private { |
||||
anotherVariableToChange++; |
||||
} |
||||
} |
File diff suppressed because it is too large
Load Diff
Loading…
Reference in new issue