mirror of https://github.com/crytic/slither
parent
c4d3898e25
commit
5eee87acb9
Binary file not shown.
@ -0,0 +1,119 @@ |
|||||||
|
pragma experimental ABIEncoderV2; |
||||||
|
|
||||||
|
contract A{} |
||||||
|
|
||||||
|
interface I{} |
||||||
|
|
||||||
|
contract Test{ |
||||||
|
|
||||||
|
function ether_unit() public{ |
||||||
|
1 wei; |
||||||
|
1 ether; |
||||||
|
} |
||||||
|
|
||||||
|
function time_unit() public{ |
||||||
|
1 seconds; |
||||||
|
1 minutes; |
||||||
|
1 hours; |
||||||
|
1 days; |
||||||
|
1 weeks; |
||||||
|
} |
||||||
|
|
||||||
|
function block_and_transactions() payable public{ |
||||||
|
blockhash(0); |
||||||
|
block.basefee; |
||||||
|
block.chainid; |
||||||
|
block.coinbase; |
||||||
|
block.difficulty; |
||||||
|
block.gaslimit; |
||||||
|
block.number; |
||||||
|
block.timestamp; |
||||||
|
gasleft(); |
||||||
|
msg.data; |
||||||
|
msg.sender; |
||||||
|
msg.sig; |
||||||
|
msg.value; |
||||||
|
block.timestamp; |
||||||
|
tx.gasprice; |
||||||
|
tx.origin; |
||||||
|
} |
||||||
|
|
||||||
|
function abi_encode() public{ |
||||||
|
bytes memory m; |
||||||
|
abi.decode(m, (uint, uint)); |
||||||
|
abi.encode(10); |
||||||
|
abi.encodePacked(uint(10)); |
||||||
|
bytes4 selector; |
||||||
|
abi.encodeWithSelector(selector, 10); |
||||||
|
string memory signature; |
||||||
|
abi.encodeWithSignature(signature, 10); |
||||||
|
} |
||||||
|
|
||||||
|
function member() public{ |
||||||
|
bytes1 b1; |
||||||
|
bytes32 b32; |
||||||
|
bytes.concat(b1, b32); |
||||||
|
string.concat("", ""); |
||||||
|
} |
||||||
|
|
||||||
|
function error_handling() public{ |
||||||
|
assert(true); |
||||||
|
require(true); |
||||||
|
require(true, "something"); |
||||||
|
revert(); |
||||||
|
revert("something"); |
||||||
|
} |
||||||
|
|
||||||
|
function math_and_crypto() public{ |
||||||
|
addmod(0, 0, 1); |
||||||
|
mulmod(0, 0, 1); |
||||||
|
keccak256(""); |
||||||
|
sha256(""); |
||||||
|
ripemd160(""); |
||||||
|
bytes32 hash; |
||||||
|
uint8 v; |
||||||
|
bytes32 r; |
||||||
|
bytes32 s; |
||||||
|
ecrecover(hash,v,r,s); |
||||||
|
} |
||||||
|
|
||||||
|
function address_related() public{ |
||||||
|
address payable a; |
||||||
|
a.balance; |
||||||
|
a.code; |
||||||
|
a.codehash; |
||||||
|
a.send(0); |
||||||
|
a.transfer(0); |
||||||
|
a.call(""); |
||||||
|
a.delegatecall(""); |
||||||
|
a.staticcall(""); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
function return_addr() internal returns(address){} |
||||||
|
function address_edge_case() public{ |
||||||
|
// For now slithIR loss precision on this edge case |
||||||
|
// And create a Ref variable instead of a Temporary one |
||||||
|
return_addr().balance; |
||||||
|
return_addr().code; |
||||||
|
return_addr().codehash; |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
function contract_related() public{ |
||||||
|
this; |
||||||
|
address payable a; |
||||||
|
selfdestruct(a); |
||||||
|
} |
||||||
|
|
||||||
|
function type_related() public{ |
||||||
|
type(A).name; |
||||||
|
type(A).creationCode; |
||||||
|
type(A).runtimeCode; |
||||||
|
type(I).interfaceId; |
||||||
|
type(uint256).min; |
||||||
|
type(uint256).min; |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
} |
Loading…
Reference in new issue