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