[
[
{
"elements" : [
{
"type" : "function" ,
"name" : "withdrawBalance_fixed_3" ,
"source_mapping" : {
"start" : 1839 ,
"length" : 393 ,
"filename_relative" : "tests/detectors/reentrancy-eth/0.7.6/reentrancy.sol" ,
"filename_absolute" : "/GENERIC_PATH" ,
"filename_short" : "tests/detectors/reentrancy-eth/0.7.6/reentrancy.sol" ,
"is_dependency" : false ,
"lines" : [
55 ,
56 ,
57 ,
58 ,
59 ,
60 ,
61 ,
62 ,
63 ,
64
] ,
"starting_column" : 5 ,
"ending_column" : 6
} ,
"type_specific_fields" : {
"parent" : {
"type" : "contract" ,
"name" : "Reentrancy" ,
"source_mapping" : {
"start" : 28 ,
"length" : 2209 ,
"filename_relative" : "tests/detectors/reentrancy-eth/0.7.6/reentrancy.sol" ,
"filename_absolute" : "/GENERIC_PATH" ,
"filename_short" : "tests/detectors/reentrancy-eth/0.7.6/reentrancy.sol" ,
"is_dependency" : false ,
"lines" : [
3 ,
4 ,
5 ,
6 ,
7 ,
8 ,
9 ,
10 ,
11 ,
12 ,
13 ,
14 ,
15 ,
16 ,
17 ,
18 ,
19 ,
20 ,
21 ,
22 ,
23 ,
24 ,
25 ,
26 ,
27 ,
28 ,
29 ,
30 ,
31 ,
32 ,
33 ,
34 ,
35 ,
36 ,
37 ,
38 ,
39 ,
40 ,
41 ,
42 ,
43 ,
44 ,
45 ,
46 ,
47 ,
48 ,
49 ,
50 ,
51 ,
52 ,
53 ,
54 ,
55 ,
56 ,
57 ,
58 ,
59 ,
60 ,
61 ,
62 ,
63 ,
64 ,
65
] ,
"starting_column" : 1 ,
"ending_column" : 2
}
} ,
"signature" : "withdrawBalance_fixed_3()"
}
} ,
{
"type" : "node" ,
"name" : "(ret,mem) = msg.sender.call{value: amount}()" ,
"source_mapping" : {
"start" : 2084 ,
"length" : 64 ,
"filename_relative" : "tests/detectors/reentrancy-eth/0.7.6/reentrancy.sol" ,
"filename_absolute" : "/GENERIC_PATH" ,
"filename_short" : "tests/detectors/reentrancy-eth/0.7.6/reentrancy.sol" ,
"is_dependency" : false ,
"lines" : [
60
] ,
"starting_column" : 9 ,
"ending_column" : 73
} ,
"type_specific_fields" : {
"parent" : {
"type" : "function" ,
"name" : "withdrawBalance_fixed_3" ,
"source_mapping" : {
"start" : 1839 ,
"length" : 393 ,
"filename_relative" : "tests/detectors/reentrancy-eth/0.7.6/reentrancy.sol" ,
"filename_absolute" : "/GENERIC_PATH" ,
"filename_short" : "tests/detectors/reentrancy-eth/0.7.6/reentrancy.sol" ,
"is_dependency" : false ,
"lines" : [
55 ,
56 ,
57 ,
58 ,
59 ,
60 ,
61 ,
62 ,
63 ,
64
] ,
"starting_column" : 5 ,
"ending_column" : 6
} ,
"type_specific_fields" : {
"parent" : {
"type" : "contract" ,
"name" : "Reentrancy" ,
"source_mapping" : {
"start" : 28 ,
"length" : 2209 ,
"filename_relative" : "tests/detectors/reentrancy-eth/0.7.6/reentrancy.sol" ,
"filename_absolute" : "/GENERIC_PATH" ,
"filename_short" : "tests/detectors/reentrancy-eth/0.7.6/reentrancy.sol" ,
"is_dependency" : false ,
"lines" : [
3 ,
4 ,
5 ,
6 ,
7 ,
8 ,
9 ,
10 ,
11 ,
12 ,
13 ,
14 ,
15 ,
16 ,
17 ,
18 ,
19 ,
20 ,
21 ,
22 ,
23 ,
24 ,
25 ,
26 ,
27 ,
28 ,
29 ,
30 ,
31 ,
32 ,
33 ,
34 ,
35 ,
36 ,
37 ,
38 ,
39 ,
40 ,
41 ,
42 ,
43 ,
44 ,
45 ,
46 ,
47 ,
48 ,
49 ,
50 ,
51 ,
52 ,
53 ,
54 ,
55 ,
56 ,
57 ,
58 ,
59 ,
60 ,
61 ,
62 ,
63 ,
64 ,
65
] ,
"starting_column" : 1 ,
"ending_column" : 2
}
} ,
"signature" : "withdrawBalance_fixed_3()"
}
}
} ,
"additional_fields" : {
"underlying_type" : "external_calls"
}
} ,
{
"type" : "node" ,
"name" : "userBalance[msg.sender] = amount" ,
"source_mapping" : {
"start" : 2183 ,
"length" : 32 ,
"filename_relative" : "tests/detectors/reentrancy-eth/0.7.6/reentrancy.sol" ,
"filename_absolute" : "/GENERIC_PATH" ,
"filename_short" : "tests/detectors/reentrancy-eth/0.7.6/reentrancy.sol" ,
"is_dependency" : false ,
"lines" : [
62
] ,
"starting_column" : 13 ,
"ending_column" : 45
} ,
"type_specific_fields" : {
"parent" : {
"type" : "function" ,
"name" : "withdrawBalance_fixed_3" ,
"source_mapping" : {
"start" : 1839 ,
"length" : 393 ,
"filename_relative" : "tests/detectors/reentrancy-eth/0.7.6/reentrancy.sol" ,
"filename_absolute" : "/GENERIC_PATH" ,
"filename_short" : "tests/detectors/reentrancy-eth/0.7.6/reentrancy.sol" ,
"is_dependency" : false ,
"lines" : [
55 ,
56 ,
57 ,
58 ,
59 ,
60 ,
61 ,
62 ,
63 ,
64
] ,
"starting_column" : 5 ,
"ending_column" : 6
} ,
"type_specific_fields" : {
"parent" : {
"type" : "contract" ,
"name" : "Reentrancy" ,
"source_mapping" : {
"start" : 28 ,
"length" : 2209 ,
"filename_relative" : "tests/detectors/reentrancy-eth/0.7.6/reentrancy.sol" ,
"filename_absolute" : "/GENERIC_PATH" ,
"filename_short" : "tests/detectors/reentrancy-eth/0.7.6/reentrancy.sol" ,
"is_dependency" : false ,
"lines" : [
3 ,
4 ,
5 ,
6 ,
7 ,
8 ,
9 ,
10 ,
11 ,
12 ,
13 ,
14 ,
15 ,
16 ,
17 ,
18 ,
19 ,
20 ,
21 ,
22 ,
23 ,
24 ,
25 ,
26 ,
27 ,
28 ,
29 ,
30 ,
31 ,
32 ,
33 ,
34 ,
35 ,
36 ,
37 ,
38 ,
39 ,
40 ,
41 ,
42 ,
43 ,
44 ,
45 ,
46 ,
47 ,
48 ,
49 ,
50 ,
51 ,
52 ,
53 ,
54 ,
55 ,
56 ,
57 ,
58 ,
59 ,
60 ,
61 ,
62 ,
63 ,
64 ,
65
] ,
"starting_column" : 1 ,
"ending_column" : 2
}
} ,
"signature" : "withdrawBalance_fixed_3()"
}
}
} ,
"additional_fields" : {
"underlying_type" : "variables_written" ,
"variable_name" : "userBalance"
}
}
] ,
"description" : "Reentrancy in Reentrancy.withdrawBalance_fixed_3() (tests/detectors/reentrancy-eth/0.7.6/reentrancy.sol#55-64):\n\tExternal calls:\n\t- (ret,mem) = msg.sender.call{value: amount}() (tests/detectors/reentrancy-eth/0.7.6/reentrancy.sol#60)\n\tState variables written after the call(s):\n\t- userBalance[msg.sender] = amount (tests/detectors/reentrancy-eth/0.7.6/reentrancy.sol#62)\n" ,
"markdown" : "Reentrancy in [Reentrancy.withdrawBalance_fixed_3()](tests/detectors/reentrancy-eth/0.7.6/reentrancy.sol#L55-L64):\n\tExternal calls:\n\t- [(ret,mem) = msg.sender.call{value: amount}()](tests/detectors/reentrancy-eth/0.7.6/reentrancy.sol#L60)\n\tState variables written after the call(s):\n\t- [userBalance[msg.sender] = amount](tests/detectors/reentrancy-eth/0.7.6/reentrancy.sol#L62)\n" ,
"first_markdown_element" : "tests/detectors/reentrancy-eth/0.7.6/reentrancy.sol#L55-L64" ,
"id" : "d68cc7cd493eca1fda517423f6f6ad0a5671d0bbea1d80ec0cb403ca66d5d4b8" ,
"check" : "reentrancy-eth" ,
"impact" : "High" ,
"confidence" : "Medium"
} ,
{
"elements" : [
{
"type" : "function" ,
"name" : "withdrawBalance" ,
"source_mapping" : {
"start" : 703 ,
"length" : 357 ,
"filename_relative" : "tests/detectors/reentrancy-eth/0.7.6/reentrancy.sol" ,
"filename_absolute" : "/GENERIC_PATH" ,
"filename_short" : "tests/detectors/reentrancy-eth/0.7.6/reentrancy.sol" ,
"is_dependency" : false ,
"lines" : [
25 ,
26 ,
27 ,
28 ,
29 ,
30 ,
31 ,
32 ,
33
] ,
"starting_column" : 5 ,
"ending_column" : 6
} ,
"type_specific_fields" : {
"parent" : {
"type" : "contract" ,
"name" : "Reentrancy" ,
"source_mapping" : {
"start" : 28 ,
"length" : 2209 ,
"filename_relative" : "tests/detectors/reentrancy-eth/0.7.6/reentrancy.sol" ,
"filename_absolute" : "/GENERIC_PATH" ,
"filename_short" : "tests/detectors/reentrancy-eth/0.7.6/reentrancy.sol" ,
"is_dependency" : false ,
"lines" : [
3 ,
4 ,
5 ,
6 ,
7 ,
8 ,
9 ,
10 ,
11 ,
12 ,
13 ,
14 ,
15 ,
16 ,
17 ,
18 ,
19 ,
20 ,
21 ,
22 ,
23 ,
24 ,
25 ,
26 ,
27 ,
28 ,
29 ,
30 ,
31 ,
32 ,
33 ,
34 ,
35 ,
36 ,
37 ,
38 ,
39 ,
40 ,
41 ,
42 ,
43 ,
44 ,
45 ,
46 ,
47 ,
48 ,
49 ,
50 ,
51 ,
52 ,
53 ,
54 ,
55 ,
56 ,
57 ,
58 ,
59 ,
60 ,
61 ,
62 ,
63 ,
64 ,
65
] ,
"starting_column" : 1 ,
"ending_column" : 2
}
} ,
"signature" : "withdrawBalance()"
}
} ,
{
"type" : "node" ,
"name" : "(ret,mem) = msg.sender.call{value: userBalance[msg.sender]}()" ,
"source_mapping" : {
"start" : 882 ,
"length" : 81 ,
"filename_relative" : "tests/detectors/reentrancy-eth/0.7.6/reentrancy.sol" ,
"filename_absolute" : "/GENERIC_PATH" ,
"filename_short" : "tests/detectors/reentrancy-eth/0.7.6/reentrancy.sol" ,
"is_dependency" : false ,
"lines" : [
28
] ,
"starting_column" : 9 ,
"ending_column" : 90
} ,
"type_specific_fields" : {
"parent" : {
"type" : "function" ,
"name" : "withdrawBalance" ,
"source_mapping" : {
"start" : 703 ,
"length" : 357 ,
"filename_relative" : "tests/detectors/reentrancy-eth/0.7.6/reentrancy.sol" ,
"filename_absolute" : "/GENERIC_PATH" ,
"filename_short" : "tests/detectors/reentrancy-eth/0.7.6/reentrancy.sol" ,
"is_dependency" : false ,
"lines" : [
25 ,
26 ,
27 ,
28 ,
29 ,
30 ,
31 ,
32 ,
33
] ,
"starting_column" : 5 ,
"ending_column" : 6
} ,
"type_specific_fields" : {
"parent" : {
"type" : "contract" ,
"name" : "Reentrancy" ,
"source_mapping" : {
"start" : 28 ,
"length" : 2209 ,
"filename_relative" : "tests/detectors/reentrancy-eth/0.7.6/reentrancy.sol" ,
"filename_absolute" : "/GENERIC_PATH" ,
"filename_short" : "tests/detectors/reentrancy-eth/0.7.6/reentrancy.sol" ,
"is_dependency" : false ,
"lines" : [
3 ,
4 ,
5 ,
6 ,
7 ,
8 ,
9 ,
10 ,
11 ,
12 ,
13 ,
14 ,
15 ,
16 ,
17 ,
18 ,
19 ,
20 ,
21 ,
22 ,
23 ,
24 ,
25 ,
26 ,
27 ,
28 ,
29 ,
30 ,
31 ,
32 ,
33 ,
34 ,
35 ,
36 ,
37 ,
38 ,
39 ,
40 ,
41 ,
42 ,
43 ,
44 ,
45 ,
46 ,
47 ,
48 ,
49 ,
50 ,
51 ,
52 ,
53 ,
54 ,
55 ,
56 ,
57 ,
58 ,
59 ,
60 ,
61 ,
62 ,
63 ,
64 ,
65
] ,
"starting_column" : 1 ,
"ending_column" : 2
}
} ,
"signature" : "withdrawBalance()"
}
}
} ,
"additional_fields" : {
"underlying_type" : "external_calls"
}
} ,
{
"type" : "node" ,
"name" : "userBalance[msg.sender] = 0" ,
"source_mapping" : {
"start" : 1026 ,
"length" : 27 ,
"filename_relative" : "tests/detectors/reentrancy-eth/0.7.6/reentrancy.sol" ,
"filename_absolute" : "/GENERIC_PATH" ,
"filename_short" : "tests/detectors/reentrancy-eth/0.7.6/reentrancy.sol" ,
"is_dependency" : false ,
"lines" : [
32
] ,
"starting_column" : 9 ,
"ending_column" : 36
} ,
"type_specific_fields" : {
"parent" : {
"type" : "function" ,
"name" : "withdrawBalance" ,
"source_mapping" : {
"start" : 703 ,
"length" : 357 ,
"filename_relative" : "tests/detectors/reentrancy-eth/0.7.6/reentrancy.sol" ,
"filename_absolute" : "/GENERIC_PATH" ,
"filename_short" : "tests/detectors/reentrancy-eth/0.7.6/reentrancy.sol" ,
"is_dependency" : false ,
"lines" : [
25 ,
26 ,
27 ,
28 ,
29 ,
30 ,
31 ,
32 ,
33
] ,
"starting_column" : 5 ,
"ending_column" : 6
} ,
"type_specific_fields" : {
"parent" : {
"type" : "contract" ,
"name" : "Reentrancy" ,
"source_mapping" : {
"start" : 28 ,
"length" : 2209 ,
"filename_relative" : "tests/detectors/reentrancy-eth/0.7.6/reentrancy.sol" ,
"filename_absolute" : "/GENERIC_PATH" ,
"filename_short" : "tests/detectors/reentrancy-eth/0.7.6/reentrancy.sol" ,
"is_dependency" : false ,
"lines" : [
3 ,
4 ,
5 ,
6 ,
7 ,
8 ,
9 ,
10 ,
11 ,
12 ,
13 ,
14 ,
15 ,
16 ,
17 ,
18 ,
19 ,
20 ,
21 ,
22 ,
23 ,
24 ,
25 ,
26 ,
27 ,
28 ,
29 ,
30 ,
31 ,
32 ,
33 ,
34 ,
35 ,
36 ,
37 ,
38 ,
39 ,
40 ,
41 ,
42 ,
43 ,
44 ,
45 ,
46 ,
47 ,
48 ,
49 ,
50 ,
51 ,
52 ,
53 ,
54 ,
55 ,
56 ,
57 ,
58 ,
59 ,
60 ,
61 ,
62 ,
63 ,
64 ,
65
] ,
"starting_column" : 1 ,
"ending_column" : 2
}
} ,
"signature" : "withdrawBalance()"
}
}
} ,
"additional_fields" : {
"underlying_type" : "variables_written" ,
"variable_name" : "userBalance"
}
}
] ,
"description" : "Reentrancy in Reentrancy.withdrawBalance() (tests/detectors/reentrancy-eth/0.7.6/reentrancy.sol#25-33):\n\tExternal calls:\n\t- (ret,mem) = msg.sender.call{value: userBalance[msg.sender]}() (tests/detectors/reentrancy-eth/0.7.6/reentrancy.sol#28)\n\tState variables written after the call(s):\n\t- userBalance[msg.sender] = 0 (tests/detectors/reentrancy-eth/0.7.6/reentrancy.sol#32)\n" ,
"markdown" : "Reentrancy in [Reentrancy.withdrawBalance()](tests/detectors/reentrancy-eth/0.7.6/reentrancy.sol#L25-L33):\n\tExternal calls:\n\t- [(ret,mem) = msg.sender.call{value: userBalance[msg.sender]}()](tests/detectors/reentrancy-eth/0.7.6/reentrancy.sol#L28)\n\tState variables written after the call(s):\n\t- [userBalance[msg.sender] = 0](tests/detectors/reentrancy-eth/0.7.6/reentrancy.sol#L32)\n" ,
"first_markdown_element" : "tests/detectors/reentrancy-eth/0.7.6/reentrancy.sol#L25-L33" ,
"id" : "df77aefe86b51d596b1dba22bde98d85390038724420e61fb18579fd90af852c" ,
"check" : "reentrancy-eth" ,
"impact" : "High" ,
"confidence" : "Medium"
}
]
]