[
[
{
"elements" : [
{
"type" : "function" ,
"name" : "withdraw" ,
"source_mapping" : {
"start" : 639 ,
"length" : 278 ,
"filename_relative" : "tests/detectors/reentrancy-eth/0.4.25/reentrancy_indirect.sol" ,
"filename_absolute" : "/GENERIC_PATH" ,
"filename_short" : "tests/detectors/reentrancy-eth/0.4.25/reentrancy_indirect.sol" ,
"is_dependency" : false ,
"lines" : [
22 ,
23 ,
24 ,
25 ,
26 ,
27 ,
28 ,
29
] ,
"starting_column" : 5 ,
"ending_column" : 6
} ,
"type_specific_fields" : {
"parent" : {
"type" : "contract" ,
"name" : "Reentrancy" ,
"source_mapping" : {
"start" : 185 ,
"length" : 735 ,
"filename_relative" : "tests/detectors/reentrancy-eth/0.4.25/reentrancy_indirect.sol" ,
"filename_absolute" : "/GENERIC_PATH" ,
"filename_short" : "tests/detectors/reentrancy-eth/0.4.25/reentrancy_indirect.sol" ,
"is_dependency" : false ,
"lines" : [
8 ,
9 ,
10 ,
11 ,
12 ,
13 ,
14 ,
15 ,
16 ,
17 ,
18 ,
19 ,
20 ,
21 ,
22 ,
23 ,
24 ,
25 ,
26 ,
27 ,
28 ,
29 ,
30 ,
31
] ,
"starting_column" : 1 ,
"ending_column" : 2
}
} ,
"signature" : "withdraw(address)"
}
} ,
{
"type" : "node" ,
"name" : "require(bool)(Token(token).transfer(msg.sender,token_deposed[token][msg.sender]))" ,
"source_mapping" : {
"start" : 742 ,
"length" : 76 ,
"filename_relative" : "tests/detectors/reentrancy-eth/0.4.25/reentrancy_indirect.sol" ,
"filename_absolute" : "/GENERIC_PATH" ,
"filename_short" : "tests/detectors/reentrancy-eth/0.4.25/reentrancy_indirect.sol" ,
"is_dependency" : false ,
"lines" : [
24
] ,
"starting_column" : 9 ,
"ending_column" : 85
} ,
"type_specific_fields" : {
"parent" : {
"type" : "function" ,
"name" : "withdraw" ,
"source_mapping" : {
"start" : 639 ,
"length" : 278 ,
"filename_relative" : "tests/detectors/reentrancy-eth/0.4.25/reentrancy_indirect.sol" ,
"filename_absolute" : "/GENERIC_PATH" ,
"filename_short" : "tests/detectors/reentrancy-eth/0.4.25/reentrancy_indirect.sol" ,
"is_dependency" : false ,
"lines" : [
22 ,
23 ,
24 ,
25 ,
26 ,
27 ,
28 ,
29
] ,
"starting_column" : 5 ,
"ending_column" : 6
} ,
"type_specific_fields" : {
"parent" : {
"type" : "contract" ,
"name" : "Reentrancy" ,
"source_mapping" : {
"start" : 185 ,
"length" : 735 ,
"filename_relative" : "tests/detectors/reentrancy-eth/0.4.25/reentrancy_indirect.sol" ,
"filename_absolute" : "/GENERIC_PATH" ,
"filename_short" : "tests/detectors/reentrancy-eth/0.4.25/reentrancy_indirect.sol" ,
"is_dependency" : false ,
"lines" : [
8 ,
9 ,
10 ,
11 ,
12 ,
13 ,
14 ,
15 ,
16 ,
17 ,
18 ,
19 ,
20 ,
21 ,
22 ,
23 ,
24 ,
25 ,
26 ,
27 ,
28 ,
29 ,
30 ,
31
] ,
"starting_column" : 1 ,
"ending_column" : 2
}
} ,
"signature" : "withdraw(address)"
}
}
} ,
"additional_fields" : {
"underlying_type" : "external_calls"
}
} ,
{
"type" : "node" ,
"name" : "msg.sender.transfer(eth_deposed[token][msg.sender])" ,
"source_mapping" : {
"start" : 681 ,
"length" : 51 ,
"filename_relative" : "tests/detectors/reentrancy-eth/0.4.25/reentrancy_indirect.sol" ,
"filename_absolute" : "/GENERIC_PATH" ,
"filename_short" : "tests/detectors/reentrancy-eth/0.4.25/reentrancy_indirect.sol" ,
"is_dependency" : false ,
"lines" : [
23
] ,
"starting_column" : 9 ,
"ending_column" : 60
} ,
"type_specific_fields" : {
"parent" : {
"type" : "function" ,
"name" : "withdraw" ,
"source_mapping" : {
"start" : 639 ,
"length" : 278 ,
"filename_relative" : "tests/detectors/reentrancy-eth/0.4.25/reentrancy_indirect.sol" ,
"filename_absolute" : "/GENERIC_PATH" ,
"filename_short" : "tests/detectors/reentrancy-eth/0.4.25/reentrancy_indirect.sol" ,
"is_dependency" : false ,
"lines" : [
22 ,
23 ,
24 ,
25 ,
26 ,
27 ,
28 ,
29
] ,
"starting_column" : 5 ,
"ending_column" : 6
} ,
"type_specific_fields" : {
"parent" : {
"type" : "contract" ,
"name" : "Reentrancy" ,
"source_mapping" : {
"start" : 185 ,
"length" : 735 ,
"filename_relative" : "tests/detectors/reentrancy-eth/0.4.25/reentrancy_indirect.sol" ,
"filename_absolute" : "/GENERIC_PATH" ,
"filename_short" : "tests/detectors/reentrancy-eth/0.4.25/reentrancy_indirect.sol" ,
"is_dependency" : false ,
"lines" : [
8 ,
9 ,
10 ,
11 ,
12 ,
13 ,
14 ,
15 ,
16 ,
17 ,
18 ,
19 ,
20 ,
21 ,
22 ,
23 ,
24 ,
25 ,
26 ,
27 ,
28 ,
29 ,
30 ,
31
] ,
"starting_column" : 1 ,
"ending_column" : 2
}
} ,
"signature" : "withdraw(address)"
}
}
} ,
"additional_fields" : {
"underlying_type" : "external_calls_sending_eth"
}
} ,
{
"type" : "node" ,
"name" : "eth_deposed[token][msg.sender] = 0" ,
"source_mapping" : {
"start" : 829 ,
"length" : 34 ,
"filename_relative" : "tests/detectors/reentrancy-eth/0.4.25/reentrancy_indirect.sol" ,
"filename_absolute" : "/GENERIC_PATH" ,
"filename_short" : "tests/detectors/reentrancy-eth/0.4.25/reentrancy_indirect.sol" ,
"is_dependency" : false ,
"lines" : [
26
] ,
"starting_column" : 9 ,
"ending_column" : 43
} ,
"type_specific_fields" : {
"parent" : {
"type" : "function" ,
"name" : "withdraw" ,
"source_mapping" : {
"start" : 639 ,
"length" : 278 ,
"filename_relative" : "tests/detectors/reentrancy-eth/0.4.25/reentrancy_indirect.sol" ,
"filename_absolute" : "/GENERIC_PATH" ,
"filename_short" : "tests/detectors/reentrancy-eth/0.4.25/reentrancy_indirect.sol" ,
"is_dependency" : false ,
"lines" : [
22 ,
23 ,
24 ,
25 ,
26 ,
27 ,
28 ,
29
] ,
"starting_column" : 5 ,
"ending_column" : 6
} ,
"type_specific_fields" : {
"parent" : {
"type" : "contract" ,
"name" : "Reentrancy" ,
"source_mapping" : {
"start" : 185 ,
"length" : 735 ,
"filename_relative" : "tests/detectors/reentrancy-eth/0.4.25/reentrancy_indirect.sol" ,
"filename_absolute" : "/GENERIC_PATH" ,
"filename_short" : "tests/detectors/reentrancy-eth/0.4.25/reentrancy_indirect.sol" ,
"is_dependency" : false ,
"lines" : [
8 ,
9 ,
10 ,
11 ,
12 ,
13 ,
14 ,
15 ,
16 ,
17 ,
18 ,
19 ,
20 ,
21 ,
22 ,
23 ,
24 ,
25 ,
26 ,
27 ,
28 ,
29 ,
30 ,
31
] ,
"starting_column" : 1 ,
"ending_column" : 2
}
} ,
"signature" : "withdraw(address)"
}
}
} ,
"additional_fields" : {
"underlying_type" : "variables_written" ,
"variable_name" : "eth_deposed"
}
} ,
{
"type" : "node" ,
"name" : "token_deposed[token][msg.sender] = 0" ,
"source_mapping" : {
"start" : 873 ,
"length" : 36 ,
"filename_relative" : "tests/detectors/reentrancy-eth/0.4.25/reentrancy_indirect.sol" ,
"filename_absolute" : "/GENERIC_PATH" ,
"filename_short" : "tests/detectors/reentrancy-eth/0.4.25/reentrancy_indirect.sol" ,
"is_dependency" : false ,
"lines" : [
27
] ,
"starting_column" : 9 ,
"ending_column" : 45
} ,
"type_specific_fields" : {
"parent" : {
"type" : "function" ,
"name" : "withdraw" ,
"source_mapping" : {
"start" : 639 ,
"length" : 278 ,
"filename_relative" : "tests/detectors/reentrancy-eth/0.4.25/reentrancy_indirect.sol" ,
"filename_absolute" : "/GENERIC_PATH" ,
"filename_short" : "tests/detectors/reentrancy-eth/0.4.25/reentrancy_indirect.sol" ,
"is_dependency" : false ,
"lines" : [
22 ,
23 ,
24 ,
25 ,
26 ,
27 ,
28 ,
29
] ,
"starting_column" : 5 ,
"ending_column" : 6
} ,
"type_specific_fields" : {
"parent" : {
"type" : "contract" ,
"name" : "Reentrancy" ,
"source_mapping" : {
"start" : 185 ,
"length" : 735 ,
"filename_relative" : "tests/detectors/reentrancy-eth/0.4.25/reentrancy_indirect.sol" ,
"filename_absolute" : "/GENERIC_PATH" ,
"filename_short" : "tests/detectors/reentrancy-eth/0.4.25/reentrancy_indirect.sol" ,
"is_dependency" : false ,
"lines" : [
8 ,
9 ,
10 ,
11 ,
12 ,
13 ,
14 ,
15 ,
16 ,
17 ,
18 ,
19 ,
20 ,
21 ,
22 ,
23 ,
24 ,
25 ,
26 ,
27 ,
28 ,
29 ,
30 ,
31
] ,
"starting_column" : 1 ,
"ending_column" : 2
}
} ,
"signature" : "withdraw(address)"
}
}
} ,
"additional_fields" : {
"underlying_type" : "variables_written" ,
"variable_name" : "token_deposed"
}
}
] ,
"description" : "Reentrancy in Reentrancy.withdraw(address) (tests/detectors/reentrancy-eth/0.4.25/reentrancy_indirect.sol#22-29):\n\tExternal calls:\n\t- require(bool)(Token(token).transfer(msg.sender,token_deposed[token][msg.sender])) (tests/detectors/reentrancy-eth/0.4.25/reentrancy_indirect.sol#24)\n\tExternal calls sending eth:\n\t- msg.sender.transfer(eth_deposed[token][msg.sender]) (tests/detectors/reentrancy-eth/0.4.25/reentrancy_indirect.sol#23)\n\tState variables written after the call(s):\n\t- eth_deposed[token][msg.sender] = 0 (tests/detectors/reentrancy-eth/0.4.25/reentrancy_indirect.sol#26)\n\t- token_deposed[token][msg.sender] = 0 (tests/detectors/reentrancy-eth/0.4.25/reentrancy_indirect.sol#27)\n" ,
"markdown" : "Reentrancy in [Reentrancy.withdraw(address)](tests/detectors/reentrancy-eth/0.4.25/reentrancy_indirect.sol#L22-L29):\n\tExternal calls:\n\t- [require(bool)(Token(token).transfer(msg.sender,token_deposed[token][msg.sender]))](tests/detectors/reentrancy-eth/0.4.25/reentrancy_indirect.sol#L24)\n\tExternal calls sending eth:\n\t- [msg.sender.transfer(eth_deposed[token][msg.sender])](tests/detectors/reentrancy-eth/0.4.25/reentrancy_indirect.sol#L23)\n\tState variables written after the call(s):\n\t- [eth_deposed[token][msg.sender] = 0](tests/detectors/reentrancy-eth/0.4.25/reentrancy_indirect.sol#L26)\n\t- [token_deposed[token][msg.sender] = 0](tests/detectors/reentrancy-eth/0.4.25/reentrancy_indirect.sol#L27)\n" ,
"first_markdown_element" : "tests/detectors/reentrancy-eth/0.4.25/reentrancy_indirect.sol#L22-L29" ,
"id" : "8a2174b6a3476b6e52f3cdac7e85b44337e3b7d7df2b2504c5a75b8e2a00ea7f" ,
"check" : "reentrancy-eth" ,
"impact" : "High" ,
"confidence" : "Medium"
}
]
]