Merge pull request #222 from crytic/dev-json-stdout

Added keyword for json output to stdout
pull/231/head
Feist Josselin 6 years ago committed by GitHub
commit 01c5bc2d78
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 1
      scripts/tests_generate_expected_json_5.sh
  2. 92
      slither/__main__.py
  3. 368
      tests/expected_json/arbitrary_send-0.5.1.arbitrary-send.json
  4. 368
      tests/expected_json/arbitrary_send.arbitrary-send.json
  5. 86
      tests/expected_json/backdoor.backdoor.json
  6. 86
      tests/expected_json/backdoor.suicidal.json
  7. 226
      tests/expected_json/const_state_variables.constable-states.json
  8. 116
      tests/expected_json/constant-0.5.1.constant-function.json
  9. 442
      tests/expected_json/constant.constant-function.json
  10. 304
      tests/expected_json/controlled_delegatecall.controlled-delegatecall.json
  11. 350
      tests/expected_json/deprecated_calls.deprecated-standards.json
  12. 296
      tests/expected_json/erc20_indexed.erc20-indexed.json
  13. 398
      tests/expected_json/external_function.external-function.json
  14. 6
      tests/expected_json/external_function_2.external-function.json
  15. 2434
      tests/expected_json/incorrect_equality.incorrect-equality.json
  16. 408
      tests/expected_json/incorrect_erc20_interface.erc20-interface.json
  17. 708
      tests/expected_json/incorrect_erc721_interface.erc721-interface.json
  18. 166
      tests/expected_json/inline_assembly_contract-0.5.1.assembly.json
  19. 166
      tests/expected_json/inline_assembly_contract.assembly.json
  20. 386
      tests/expected_json/inline_assembly_library-0.5.1.assembly.json
  21. 386
      tests/expected_json/inline_assembly_library.assembly.json
  22. 118
      tests/expected_json/locked_ether-0.5.1.locked-ether.json
  23. 118
      tests/expected_json/locked_ether.locked-ether.json
  24. 116
      tests/expected_json/low_level_calls.low-level-calls.json
  25. 136
      tests/expected_json/multiple_calls_in_loop.calls-loop.json
  26. 712
      tests/expected_json/naming_convention.naming-convention.json
  27. 52
      tests/expected_json/old_solc.sol.json.solc-version.json
  28. 90
      tests/expected_json/pragma.0.4.24.pragma.json
  29. 52
      tests/expected_json/pragma.0.4.24.pragma.txt
  30. 484
      tests/expected_json/reentrancy-0.5.1.reentrancy-eth.json
  31. 10
      tests/expected_json/reentrancy-0.5.1.reentrancy.txt
  32. 556
      tests/expected_json/reentrancy.reentrancy-eth.json
  33. 22
      tests/expected_json/right_to_left_override.rtlo.json
  34. 90
      tests/expected_json/shadowing_abstract.shadowing-abstract.json
  35. 730
      tests/expected_json/shadowing_builtin_symbols.shadowing-builtin.json
  36. 578
      tests/expected_json/shadowing_local_variable.shadowing-local.json
  37. 90
      tests/expected_json/shadowing_state_variable.shadowing-state.json
  38. 90
      tests/expected_json/solc_version_incorrect.solc-version.json
  39. 422
      tests/expected_json/timestamp.timestamp.json
  40. 390
      tests/expected_json/too_many_digits.too-many-digits.json
  41. 300
      tests/expected_json/tx_origin-0.5.1.tx-origin.json
  42. 300
      tests/expected_json/tx_origin.tx-origin.json
  43. 506
      tests/expected_json/uninitialized-0.5.1.uninitialized-state.json
  44. 506
      tests/expected_json/uninitialized.uninitialized-state.json
  45. 122
      tests/expected_json/uninitialized_local_variable.uninitialized-local.json
  46. 132
      tests/expected_json/uninitialized_storage_pointer.uninitialized-storage.json
  47. 55
      tests/expected_json/uninitialized_storage_pointer.uninitialized-storage.txt
  48. 176
      tests/expected_json/unused_return.unused-return.json
  49. 56
      tests/expected_json/unused_state.unused-state.json

@ -26,7 +26,6 @@ generate_expected_json(){
#generate_expected_json tests/pragma.0.4.24.sol "pragma" #generate_expected_json tests/pragma.0.4.24.sol "pragma"
#generate_expected_json tests/old_solc.sol.json "solc-version" #generate_expected_json tests/old_solc.sol.json "solc-version"
#generate_expected_json tests/reentrancy-0.5.1.sol "reentrancy-eth" #generate_expected_json tests/reentrancy-0.5.1.sol "reentrancy-eth"
#generate_expected_json tests/reentrancy-0.5.1.sol "reentrancy"
#generate_expected_json tests/uninitialized_storage_pointer.sol "uninitialized-storage" #generate_expected_json tests/uninitialized_storage_pointer.sol "uninitialized-storage"
#generate_expected_json tests/tx_origin-0.5.1.sol "tx-origin" #generate_expected_json tests/tx_origin-0.5.1.sol "tx-origin"
#generate_expected_json tests/locked_ether-0.5.1.sol "locked-ether" #generate_expected_json tests/locked_ether-0.5.1.sol "locked-ether"

@ -29,7 +29,6 @@ from slither.exceptions import SlitherException
logging.basicConfig() logging.basicConfig()
logger = logging.getLogger("Slither") logger = logging.getLogger("Slither")
################################################################################### ###################################################################################
################################################################################### ###################################################################################
# region Process functions # region Process functions
@ -100,12 +99,27 @@ def process_files(filenames, args, detector_classes, printer_classes):
################################################################################### ###################################################################################
################################################################################### ###################################################################################
def wrap_json_stdout(success, error_message, results=None):
return {
"success": success,
"error": error_message,
"results": results
}
def output_json(results, filename): def output_json(results, filename):
if os.path.isfile(filename): json_result = wrap_json_stdout(True, None, results)
logger.info(yellow(f'{filename} exists already, the overwrite is prevented')) if filename is None:
# Write json to console
print(json.dumps(json_result))
else: else:
with open(filename, 'w', encoding='utf8') as f: # Write json to file
json.dump(results, f, indent=2) if os.path.isfile(filename):
logger.info(yellow(f'{filename} exists already, the overwrite is prevented'))
else:
with open(filename, 'w', encoding='utf8') as f:
json.dump(json_result, f, indent=2)
# endregion # endregion
################################################################################### ###################################################################################
@ -328,7 +342,7 @@ def parse_args(detector_classes, printer_classes):
group_misc.add_argument('--json', group_misc.add_argument('--json',
help='Export results as JSON', help='Export the results as a JSON file ("--json -" to export to stdout)',
action='store', action='store',
default=defaults_flag_in_config['json']) default=defaults_flag_in_config['json'])
@ -457,6 +471,24 @@ class OutputWiki(argparse.Action):
parser.exit() parser.exit()
# endregion
###################################################################################
###################################################################################
# region CustomFormatter
###################################################################################
###################################################################################
class FormatterCryticCompile(logging.Formatter):
def format(self, record):
#for i, msg in enumerate(record.msg):
if record.msg.startswith('Compilation warnings/errors on '):
txt = record.args[1]
txt = txt.split('\n')
txt = [red(x) if 'Error' in x else x for x in txt]
txt = '\n'.join(txt)
record.args = (record.args[0], txt)
return super().format(record)
# endregion # endregion
################################################################################### ###################################################################################
################################################################################### ###################################################################################
@ -464,6 +496,7 @@ class OutputWiki(argparse.Action):
################################################################################### ###################################################################################
################################################################################### ###################################################################################
def main(): def main():
detectors, printers = get_detectors_and_printers() detectors, printers = get_detectors_and_printers()
@ -480,6 +513,11 @@ def main_impl(all_detector_classes, all_printer_classes):
# Set colorization option # Set colorization option
set_colorization_enabled(not args.disable_color) set_colorization_enabled(not args.disable_color)
# If we are outputting json to stdout, we'll want to disable any logging.
stdout_json = args.json == "-"
if stdout_json:
logging.disable(logging.CRITICAL)
printer_classes = choose_printers(args, all_printer_classes) printer_classes = choose_printers(args, all_printer_classes)
detector_classes = choose_detectors(args, all_detector_classes) detector_classes = choose_detectors(args, all_detector_classes)
@ -538,7 +576,7 @@ def main_impl(all_detector_classes, all_printer_classes):
raise Exception("Unrecognised file/dir path: '#{filename}'".format(filename=filename)) raise Exception("Unrecognised file/dir path: '#{filename}'".format(filename=filename))
if args.json: if args.json:
output_json(results, args.json) output_json(results, None if stdout_json else args.json)
if args.checklist: if args.checklist:
output_results_to_markdown(results) output_results_to_markdown(results)
# Dont print the number of result for printers # Dont print the number of result for printers
@ -552,15 +590,23 @@ def main_impl(all_detector_classes, all_printer_classes):
return return
exit(results) exit(results)
except SlitherException as e: except SlitherException as se:
logging.error(red('Error:')) # Output our error accordingly, via JSON or logging.
logging.error(red(e)) if stdout_json:
logging.error('Please report an issue to https://github.com/crytic/slither/issues') print(json.dumps(wrap_json_stdout(False, repr(se), [])))
else:
logging.error(red('Error:'))
logging.error(red(se))
logging.error('Please report an issue to https://github.com/crytic/slither/issues')
sys.exit(-1) sys.exit(-1)
except Exception: except Exception:
logging.error('Error in %s' % args.filename) # Output our error accordingly, via JSON or logging.
logging.error(traceback.format_exc()) if stdout_json:
print(json.dumps(wrap_json_stdout(False, traceback.format_exc(), [])))
else:
logging.error('Error in %s' % args.filename)
logging.error(traceback.format_exc())
sys.exit(-1) sys.exit(-1)
@ -569,22 +615,4 @@ if __name__ == '__main__':
main() main()
# endregion # endregion
###################################################################################
###################################################################################
# region CustomFormatter
###################################################################################
###################################################################################
class FormatterCryticCompile(logging.Formatter):
def format(self, record):
#for i, msg in enumerate(record.msg):
if record.msg.startswith('Compilation warnings/errors on '):
txt = record.args[1]
txt = txt.split('\n')
txt = [red(x) if 'Error' in x else x for x in txt]
txt = '\n'.join(txt)
record.args = (record.args[0], txt)
return super().format(record)
# endregion

@ -1,204 +1,208 @@
[ {
{ "success": true,
"check": "arbitrary-send", "error": null,
"impact": "High", "results": [
"confidence": "Medium", {
"description": "Test.direct (tests/arbitrary_send-0.5.1.sol#11-13) sends eth to arbitrary user\n\tDangerous calls:\n\t- msg.sender.send(address(this).balance) (tests/arbitrary_send-0.5.1.sol#12)\n", "check": "arbitrary-send",
"elements": [ "impact": "High",
{ "confidence": "Medium",
"type": "function", "description": "Test.direct (tests/arbitrary_send-0.5.1.sol#11-13) sends eth to arbitrary user\n\tDangerous calls:\n\t- msg.sender.send(address(this).balance) (tests/arbitrary_send-0.5.1.sol#12)\n",
"name": "direct", "elements": [
"source_mapping": { {
"start": 162, "type": "function",
"length": 79, "name": "direct",
"filename_used": "/home/travis/build/crytic/slither/tests/arbitrary_send-0.5.1.sol",
"filename_relative": "tests/arbitrary_send-0.5.1.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/arbitrary_send-0.5.1.sol",
"filename_short": "tests/arbitrary_send-0.5.1.sol",
"lines": [
11,
12,
13
],
"starting_column": 5,
"ending_column": 6
},
"contract": {
"type": "contract",
"name": "Test",
"source_mapping": { "source_mapping": {
"start": 0, "start": 162,
"length": 884, "length": 79,
"filename_used": "/home/travis/build/crytic/slither/tests/arbitrary_send-0.5.1.sol", "filename_used": "/home/travis/build/crytic/slither/tests/arbitrary_send-0.5.1.sol",
"filename_relative": "tests/arbitrary_send-0.5.1.sol", "filename_relative": "tests/arbitrary_send-0.5.1.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/arbitrary_send-0.5.1.sol", "filename_absolute": "/home/travis/build/crytic/slither/tests/arbitrary_send-0.5.1.sol",
"filename_short": "tests/arbitrary_send-0.5.1.sol", "filename_short": "tests/arbitrary_send-0.5.1.sol",
"lines": [ "lines": [
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11, 11,
12, 12,
13, 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
], ],
"starting_column": 1, "starting_column": 5,
"ending_column": 2 "ending_column": 6
},
"contract": {
"type": "contract",
"name": "Test",
"source_mapping": {
"start": 0,
"length": 884,
"filename_used": "/home/travis/build/crytic/slither/tests/arbitrary_send-0.5.1.sol",
"filename_relative": "tests/arbitrary_send-0.5.1.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/arbitrary_send-0.5.1.sol",
"filename_short": "tests/arbitrary_send-0.5.1.sol",
"lines": [
1,
2,
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
],
"starting_column": 1,
"ending_column": 2
}
} }
}
},
{
"type": "expression",
"expression": "msg.sender.send(address(this).balance)",
"source_mapping": {
"start": 196,
"length": 38,
"filename_used": "/home/travis/build/crytic/slither/tests/arbitrary_send-0.5.1.sol",
"filename_relative": "tests/arbitrary_send-0.5.1.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/arbitrary_send-0.5.1.sol",
"filename_short": "tests/arbitrary_send-0.5.1.sol",
"lines": [
12
],
"starting_column": 9,
"ending_column": 47
}
}
]
},
{
"check": "arbitrary-send",
"impact": "High",
"confidence": "Medium",
"description": "Test.indirect (tests/arbitrary_send-0.5.1.sol#19-21) sends eth to arbitrary user\n\tDangerous calls:\n\t- destination.send(address(this).balance) (tests/arbitrary_send-0.5.1.sol#20)\n",
"elements": [
{
"type": "function",
"name": "indirect",
"source_mapping": {
"start": 316,
"length": 82,
"filename_used": "/home/travis/build/crytic/slither/tests/arbitrary_send-0.5.1.sol",
"filename_relative": "tests/arbitrary_send-0.5.1.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/arbitrary_send-0.5.1.sol",
"filename_short": "tests/arbitrary_send-0.5.1.sol",
"lines": [
19,
20,
21
],
"starting_column": 5,
"ending_column": 6
}, },
"contract": { {
"type": "contract", "type": "expression",
"name": "Test", "expression": "msg.sender.send(address(this).balance)",
"source_mapping": { "source_mapping": {
"start": 0, "start": 196,
"length": 884, "length": 38,
"filename_used": "/home/travis/build/crytic/slither/tests/arbitrary_send-0.5.1.sol",
"filename_relative": "tests/arbitrary_send-0.5.1.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/arbitrary_send-0.5.1.sol",
"filename_short": "tests/arbitrary_send-0.5.1.sol",
"lines": [
12
],
"starting_column": 9,
"ending_column": 47
}
}
]
},
{
"check": "arbitrary-send",
"impact": "High",
"confidence": "Medium",
"description": "Test.indirect (tests/arbitrary_send-0.5.1.sol#19-21) sends eth to arbitrary user\n\tDangerous calls:\n\t- destination.send(address(this).balance) (tests/arbitrary_send-0.5.1.sol#20)\n",
"elements": [
{
"type": "function",
"name": "indirect",
"source_mapping": {
"start": 316,
"length": 82,
"filename_used": "/home/travis/build/crytic/slither/tests/arbitrary_send-0.5.1.sol", "filename_used": "/home/travis/build/crytic/slither/tests/arbitrary_send-0.5.1.sol",
"filename_relative": "tests/arbitrary_send-0.5.1.sol", "filename_relative": "tests/arbitrary_send-0.5.1.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/arbitrary_send-0.5.1.sol", "filename_absolute": "/home/travis/build/crytic/slither/tests/arbitrary_send-0.5.1.sol",
"filename_short": "tests/arbitrary_send-0.5.1.sol", "filename_short": "tests/arbitrary_send-0.5.1.sol",
"lines": [ "lines": [
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19, 19,
20, 20,
21, 21
22,
23,
24,
25,
26,
27,
28,
29,
30,
31,
32,
33,
34,
35,
36,
37,
38,
39,
40,
41
], ],
"starting_column": 1, "starting_column": 5,
"ending_column": 2 "ending_column": 6
},
"contract": {
"type": "contract",
"name": "Test",
"source_mapping": {
"start": 0,
"length": 884,
"filename_used": "/home/travis/build/crytic/slither/tests/arbitrary_send-0.5.1.sol",
"filename_relative": "tests/arbitrary_send-0.5.1.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/arbitrary_send-0.5.1.sol",
"filename_short": "tests/arbitrary_send-0.5.1.sol",
"lines": [
1,
2,
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
],
"starting_column": 1,
"ending_column": 2
}
}
},
{
"type": "expression",
"expression": "destination.send(address(this).balance)",
"source_mapping": {
"start": 352,
"length": 39,
"filename_used": "/home/travis/build/crytic/slither/tests/arbitrary_send-0.5.1.sol",
"filename_relative": "tests/arbitrary_send-0.5.1.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/arbitrary_send-0.5.1.sol",
"filename_short": "tests/arbitrary_send-0.5.1.sol",
"lines": [
20
],
"starting_column": 9,
"ending_column": 48
} }
} }
}, ]
{ }
"type": "expression", ]
"expression": "destination.send(address(this).balance)", }
"source_mapping": {
"start": 352,
"length": 39,
"filename_used": "/home/travis/build/crytic/slither/tests/arbitrary_send-0.5.1.sol",
"filename_relative": "tests/arbitrary_send-0.5.1.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/arbitrary_send-0.5.1.sol",
"filename_short": "tests/arbitrary_send-0.5.1.sol",
"lines": [
20
],
"starting_column": 9,
"ending_column": 48
}
}
]
}
]

@ -1,204 +1,208 @@
[ {
{ "success": true,
"check": "arbitrary-send", "error": null,
"impact": "High", "results": [
"confidence": "Medium", {
"description": "Test.direct (tests/arbitrary_send.sol#11-13) sends eth to arbitrary user\n\tDangerous calls:\n\t- msg.sender.send(address(this).balance) (tests/arbitrary_send.sol#12)\n", "check": "arbitrary-send",
"elements": [ "impact": "High",
{ "confidence": "Medium",
"type": "function", "description": "Test.direct (tests/arbitrary_send.sol#11-13) sends eth to arbitrary user\n\tDangerous calls:\n\t- msg.sender.send(address(this).balance) (tests/arbitrary_send.sol#12)\n",
"name": "direct", "elements": [
"source_mapping": { {
"start": 147, "type": "function",
"length": 79, "name": "direct",
"filename_used": "/home/travis/build/crytic/slither/tests/arbitrary_send.sol",
"filename_relative": "tests/arbitrary_send.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/arbitrary_send.sol",
"filename_short": "tests/arbitrary_send.sol",
"lines": [
11,
12,
13
],
"starting_column": 5,
"ending_column": 6
},
"contract": {
"type": "contract",
"name": "Test",
"source_mapping": { "source_mapping": {
"start": 0, "start": 147,
"length": 869, "length": 79,
"filename_used": "/home/travis/build/crytic/slither/tests/arbitrary_send.sol", "filename_used": "/home/travis/build/crytic/slither/tests/arbitrary_send.sol",
"filename_relative": "tests/arbitrary_send.sol", "filename_relative": "tests/arbitrary_send.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/arbitrary_send.sol", "filename_absolute": "/home/travis/build/crytic/slither/tests/arbitrary_send.sol",
"filename_short": "tests/arbitrary_send.sol", "filename_short": "tests/arbitrary_send.sol",
"lines": [ "lines": [
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11, 11,
12, 12,
13, 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
], ],
"starting_column": 1, "starting_column": 5,
"ending_column": 2 "ending_column": 6
},
"contract": {
"type": "contract",
"name": "Test",
"source_mapping": {
"start": 0,
"length": 869,
"filename_used": "/home/travis/build/crytic/slither/tests/arbitrary_send.sol",
"filename_relative": "tests/arbitrary_send.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/arbitrary_send.sol",
"filename_short": "tests/arbitrary_send.sol",
"lines": [
1,
2,
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
],
"starting_column": 1,
"ending_column": 2
}
} }
}
},
{
"type": "expression",
"expression": "msg.sender.send(address(this).balance)",
"source_mapping": {
"start": 181,
"length": 38,
"filename_used": "/home/travis/build/crytic/slither/tests/arbitrary_send.sol",
"filename_relative": "tests/arbitrary_send.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/arbitrary_send.sol",
"filename_short": "tests/arbitrary_send.sol",
"lines": [
12
],
"starting_column": 9,
"ending_column": 47
}
}
]
},
{
"check": "arbitrary-send",
"impact": "High",
"confidence": "Medium",
"description": "Test.indirect (tests/arbitrary_send.sol#19-21) sends eth to arbitrary user\n\tDangerous calls:\n\t- destination.send(address(this).balance) (tests/arbitrary_send.sol#20)\n",
"elements": [
{
"type": "function",
"name": "indirect",
"source_mapping": {
"start": 301,
"length": 82,
"filename_used": "/home/travis/build/crytic/slither/tests/arbitrary_send.sol",
"filename_relative": "tests/arbitrary_send.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/arbitrary_send.sol",
"filename_short": "tests/arbitrary_send.sol",
"lines": [
19,
20,
21
],
"starting_column": 5,
"ending_column": 6
}, },
"contract": { {
"type": "contract", "type": "expression",
"name": "Test", "expression": "msg.sender.send(address(this).balance)",
"source_mapping": { "source_mapping": {
"start": 0, "start": 181,
"length": 869, "length": 38,
"filename_used": "/home/travis/build/crytic/slither/tests/arbitrary_send.sol",
"filename_relative": "tests/arbitrary_send.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/arbitrary_send.sol",
"filename_short": "tests/arbitrary_send.sol",
"lines": [
12
],
"starting_column": 9,
"ending_column": 47
}
}
]
},
{
"check": "arbitrary-send",
"impact": "High",
"confidence": "Medium",
"description": "Test.indirect (tests/arbitrary_send.sol#19-21) sends eth to arbitrary user\n\tDangerous calls:\n\t- destination.send(address(this).balance) (tests/arbitrary_send.sol#20)\n",
"elements": [
{
"type": "function",
"name": "indirect",
"source_mapping": {
"start": 301,
"length": 82,
"filename_used": "/home/travis/build/crytic/slither/tests/arbitrary_send.sol", "filename_used": "/home/travis/build/crytic/slither/tests/arbitrary_send.sol",
"filename_relative": "tests/arbitrary_send.sol", "filename_relative": "tests/arbitrary_send.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/arbitrary_send.sol", "filename_absolute": "/home/travis/build/crytic/slither/tests/arbitrary_send.sol",
"filename_short": "tests/arbitrary_send.sol", "filename_short": "tests/arbitrary_send.sol",
"lines": [ "lines": [
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19, 19,
20, 20,
21, 21
22,
23,
24,
25,
26,
27,
28,
29,
30,
31,
32,
33,
34,
35,
36,
37,
38,
39,
40,
41
], ],
"starting_column": 1, "starting_column": 5,
"ending_column": 2 "ending_column": 6
},
"contract": {
"type": "contract",
"name": "Test",
"source_mapping": {
"start": 0,
"length": 869,
"filename_used": "/home/travis/build/crytic/slither/tests/arbitrary_send.sol",
"filename_relative": "tests/arbitrary_send.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/arbitrary_send.sol",
"filename_short": "tests/arbitrary_send.sol",
"lines": [
1,
2,
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
],
"starting_column": 1,
"ending_column": 2
}
}
},
{
"type": "expression",
"expression": "destination.send(address(this).balance)",
"source_mapping": {
"start": 337,
"length": 39,
"filename_used": "/home/travis/build/crytic/slither/tests/arbitrary_send.sol",
"filename_relative": "tests/arbitrary_send.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/arbitrary_send.sol",
"filename_short": "tests/arbitrary_send.sol",
"lines": [
20
],
"starting_column": 9,
"ending_column": 48
} }
} }
}, ]
{ }
"type": "expression", ]
"expression": "destination.send(address(this).balance)", }
"source_mapping": {
"start": 337,
"length": 39,
"filename_used": "/home/travis/build/crytic/slither/tests/arbitrary_send.sol",
"filename_relative": "tests/arbitrary_send.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/arbitrary_send.sol",
"filename_short": "tests/arbitrary_send.sol",
"lines": [
20
],
"starting_column": 9,
"ending_column": 48
}
}
]
}
]

@ -1,52 +1,56 @@
[ {
{ "success": true,
"check": "backdoor", "error": null,
"impact": "High", "results": [
"confidence": "High", {
"description": "Backdoor function found in C.i_am_a_backdoor (tests/backdoor.sol#4-6)\n", "check": "backdoor",
"elements": [ "impact": "High",
{ "confidence": "High",
"type": "function", "description": "Backdoor function found in C.i_am_a_backdoor (tests/backdoor.sol#4-6)\n",
"name": "i_am_a_backdoor", "elements": [
"source_mapping": { {
"start": 18, "type": "function",
"length": 74, "name": "i_am_a_backdoor",
"filename_used": "/home/travis/build/crytic/slither/tests/backdoor.sol",
"filename_relative": "tests/backdoor.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/backdoor.sol",
"filename_short": "tests/backdoor.sol",
"lines": [
4,
5,
6
],
"starting_column": 5,
"ending_column": 6
},
"contract": {
"type": "contract",
"name": "C",
"source_mapping": { "source_mapping": {
"start": 1, "start": 18,
"length": 94, "length": 74,
"filename_used": "/home/travis/build/crytic/slither/tests/backdoor.sol", "filename_used": "/home/travis/build/crytic/slither/tests/backdoor.sol",
"filename_relative": "tests/backdoor.sol", "filename_relative": "tests/backdoor.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/backdoor.sol", "filename_absolute": "/home/travis/build/crytic/slither/tests/backdoor.sol",
"filename_short": "tests/backdoor.sol", "filename_short": "tests/backdoor.sol",
"lines": [ "lines": [
2,
3,
4, 4,
5, 5,
6, 6
7,
8
], ],
"starting_column": 1, "starting_column": 5,
"ending_column": 2 "ending_column": 6
},
"contract": {
"type": "contract",
"name": "C",
"source_mapping": {
"start": 1,
"length": 94,
"filename_used": "/home/travis/build/crytic/slither/tests/backdoor.sol",
"filename_relative": "tests/backdoor.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/backdoor.sol",
"filename_short": "tests/backdoor.sol",
"lines": [
2,
3,
4,
5,
6,
7,
8
],
"starting_column": 1,
"ending_column": 2
}
} }
} }
} ]
] }
} ]
] }

@ -1,52 +1,56 @@
[ {
{ "success": true,
"check": "suicidal", "error": null,
"impact": "High", "results": [
"confidence": "High", {
"description": "C.i_am_a_backdoor (tests/backdoor.sol#4-6) allows anyone to destruct the contract\n", "check": "suicidal",
"elements": [ "impact": "High",
{ "confidence": "High",
"type": "function", "description": "C.i_am_a_backdoor (tests/backdoor.sol#4-6) allows anyone to destruct the contract\n",
"name": "i_am_a_backdoor", "elements": [
"source_mapping": { {
"start": 18, "type": "function",
"length": 74, "name": "i_am_a_backdoor",
"filename_used": "/home/travis/build/crytic/slither/tests/backdoor.sol",
"filename_relative": "tests/backdoor.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/backdoor.sol",
"filename_short": "tests/backdoor.sol",
"lines": [
4,
5,
6
],
"starting_column": 5,
"ending_column": 6
},
"contract": {
"type": "contract",
"name": "C",
"source_mapping": { "source_mapping": {
"start": 1, "start": 18,
"length": 94, "length": 74,
"filename_used": "/home/travis/build/crytic/slither/tests/backdoor.sol", "filename_used": "/home/travis/build/crytic/slither/tests/backdoor.sol",
"filename_relative": "tests/backdoor.sol", "filename_relative": "tests/backdoor.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/backdoor.sol", "filename_absolute": "/home/travis/build/crytic/slither/tests/backdoor.sol",
"filename_short": "tests/backdoor.sol", "filename_short": "tests/backdoor.sol",
"lines": [ "lines": [
2,
3,
4, 4,
5, 5,
6, 6
7,
8
], ],
"starting_column": 1, "starting_column": 5,
"ending_column": 2 "ending_column": 6
},
"contract": {
"type": "contract",
"name": "C",
"source_mapping": {
"start": 1,
"length": 94,
"filename_used": "/home/travis/build/crytic/slither/tests/backdoor.sol",
"filename_relative": "tests/backdoor.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/backdoor.sol",
"filename_short": "tests/backdoor.sol",
"lines": [
2,
3,
4,
5,
6,
7,
8
],
"starting_column": 1,
"ending_column": 2
}
} }
} }
} ]
] }
} ]
] }

@ -1,112 +1,116 @@
[ {
{ "success": true,
"check": "constable-states", "error": null,
"impact": "Informational", "results": [
"confidence": "High", {
"description": "A.myFriendsAddress should be constant (tests/const_state_variables.sol#7)\nA.test should be constant (tests/const_state_variables.sol#10)\nA.text2 should be constant (tests/const_state_variables.sol#14)\nB.mySistersAddress should be constant (tests/const_state_variables.sol#26)\nMyConc.should_be_constant should be constant (tests/const_state_variables.sol#42)\nMyConc.should_be_constant_2 should be constant (tests/const_state_variables.sol#43)\n", "check": "constable-states",
"elements": [ "impact": "Informational",
{ "confidence": "High",
"type": "variable", "description": "A.myFriendsAddress should be constant (tests/const_state_variables.sol#7)\nA.test should be constant (tests/const_state_variables.sol#10)\nA.text2 should be constant (tests/const_state_variables.sol#14)\nB.mySistersAddress should be constant (tests/const_state_variables.sol#26)\nMyConc.should_be_constant should be constant (tests/const_state_variables.sol#42)\nMyConc.should_be_constant_2 should be constant (tests/const_state_variables.sol#43)\n",
"name": "myFriendsAddress", "elements": [
"source_mapping": { {
"start": 132, "type": "variable",
"length": 76, "name": "myFriendsAddress",
"filename_used": "/home/travis/build/crytic/slither/tests/const_state_variables.sol", "source_mapping": {
"filename_relative": "tests/const_state_variables.sol", "start": 132,
"filename_absolute": "/home/travis/build/crytic/slither/tests/const_state_variables.sol", "length": 76,
"filename_short": "tests/const_state_variables.sol", "filename_used": "/home/travis/build/crytic/slither/tests/const_state_variables.sol",
"lines": [ "filename_relative": "tests/const_state_variables.sol",
7 "filename_absolute": "/home/travis/build/crytic/slither/tests/const_state_variables.sol",
], "filename_short": "tests/const_state_variables.sol",
"starting_column": 5, "lines": [
"ending_column": 81 7
],
"starting_column": 5,
"ending_column": 81
}
},
{
"type": "variable",
"name": "mySistersAddress",
"source_mapping": {
"start": 496,
"length": 76,
"filename_used": "/home/travis/build/crytic/slither/tests/const_state_variables.sol",
"filename_relative": "tests/const_state_variables.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/const_state_variables.sol",
"filename_short": "tests/const_state_variables.sol",
"lines": [
26
],
"starting_column": 5,
"ending_column": 81
}
},
{
"type": "variable",
"name": "should_be_constant",
"source_mapping": {
"start": 793,
"length": 42,
"filename_used": "/home/travis/build/crytic/slither/tests/const_state_variables.sol",
"filename_relative": "tests/const_state_variables.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/const_state_variables.sol",
"filename_short": "tests/const_state_variables.sol",
"lines": [
42
],
"starting_column": 5,
"ending_column": 47
}
},
{
"type": "variable",
"name": "should_be_constant_2",
"source_mapping": {
"start": 841,
"length": 33,
"filename_used": "/home/travis/build/crytic/slither/tests/const_state_variables.sol",
"filename_relative": "tests/const_state_variables.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/const_state_variables.sol",
"filename_short": "tests/const_state_variables.sol",
"lines": [
43
],
"starting_column": 5,
"ending_column": 38
}
},
{
"type": "variable",
"name": "test",
"source_mapping": {
"start": 237,
"length": 20,
"filename_used": "/home/travis/build/crytic/slither/tests/const_state_variables.sol",
"filename_relative": "tests/const_state_variables.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/const_state_variables.sol",
"filename_short": "tests/const_state_variables.sol",
"lines": [
10
],
"starting_column": 5,
"ending_column": 25
}
},
{
"type": "variable",
"name": "text2",
"source_mapping": {
"start": 333,
"length": 20,
"filename_used": "/home/travis/build/crytic/slither/tests/const_state_variables.sol",
"filename_relative": "tests/const_state_variables.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/const_state_variables.sol",
"filename_short": "tests/const_state_variables.sol",
"lines": [
14
],
"starting_column": 5,
"ending_column": 25
}
} }
}, ]
{ }
"type": "variable", ]
"name": "mySistersAddress", }
"source_mapping": {
"start": 496,
"length": 76,
"filename_used": "/home/travis/build/crytic/slither/tests/const_state_variables.sol",
"filename_relative": "tests/const_state_variables.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/const_state_variables.sol",
"filename_short": "tests/const_state_variables.sol",
"lines": [
26
],
"starting_column": 5,
"ending_column": 81
}
},
{
"type": "variable",
"name": "should_be_constant",
"source_mapping": {
"start": 793,
"length": 42,
"filename_used": "/home/travis/build/crytic/slither/tests/const_state_variables.sol",
"filename_relative": "tests/const_state_variables.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/const_state_variables.sol",
"filename_short": "tests/const_state_variables.sol",
"lines": [
42
],
"starting_column": 5,
"ending_column": 47
}
},
{
"type": "variable",
"name": "should_be_constant_2",
"source_mapping": {
"start": 841,
"length": 33,
"filename_used": "/home/travis/build/crytic/slither/tests/const_state_variables.sol",
"filename_relative": "tests/const_state_variables.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/const_state_variables.sol",
"filename_short": "tests/const_state_variables.sol",
"lines": [
43
],
"starting_column": 5,
"ending_column": 38
}
},
{
"type": "variable",
"name": "test",
"source_mapping": {
"start": 237,
"length": 20,
"filename_used": "/home/travis/build/crytic/slither/tests/const_state_variables.sol",
"filename_relative": "tests/const_state_variables.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/const_state_variables.sol",
"filename_short": "tests/const_state_variables.sol",
"lines": [
10
],
"starting_column": 5,
"ending_column": 25
}
},
{
"type": "variable",
"name": "text2",
"source_mapping": {
"start": 333,
"length": 20,
"filename_used": "/home/travis/build/crytic/slither/tests/const_state_variables.sol",
"filename_relative": "tests/const_state_variables.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/const_state_variables.sol",
"filename_short": "tests/const_state_variables.sol",
"lines": [
14
],
"starting_column": 5,
"ending_column": 25
}
}
]
}
]

@ -1,67 +1,71 @@
[ {
{ "success": true,
"check": "constant-function", "error": null,
"impact": "Medium", "results": [
"confidence": "Medium", {
"description": "Constant.test_assembly_bug (tests/constant-0.5.1.sol#15-17) is declared view but contains assembly code\n", "check": "constant-function",
"elements": [ "impact": "Medium",
{ "confidence": "Medium",
"type": "function", "description": "Constant.test_assembly_bug (tests/constant-0.5.1.sol#15-17) is declared view but contains assembly code\n",
"name": "test_assembly_bug", "elements": [
"source_mapping": { {
"start": 185, "type": "function",
"length": 66, "name": "test_assembly_bug",
"filename_used": "/home/travis/build/crytic/slither/tests/constant-0.5.1.sol",
"filename_relative": "tests/constant-0.5.1.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/constant-0.5.1.sol",
"filename_short": "tests/constant-0.5.1.sol",
"lines": [
15,
16,
17
],
"starting_column": 5,
"ending_column": 6
},
"contract": {
"type": "contract",
"name": "Constant",
"source_mapping": { "source_mapping": {
"start": 0, "start": 185,
"length": 253, "length": 66,
"filename_used": "/home/travis/build/crytic/slither/tests/constant-0.5.1.sol", "filename_used": "/home/travis/build/crytic/slither/tests/constant-0.5.1.sol",
"filename_relative": "tests/constant-0.5.1.sol", "filename_relative": "tests/constant-0.5.1.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/constant-0.5.1.sol", "filename_absolute": "/home/travis/build/crytic/slither/tests/constant-0.5.1.sol",
"filename_short": "tests/constant-0.5.1.sol", "filename_short": "tests/constant-0.5.1.sol",
"lines": [ "lines": [
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15, 15,
16, 16,
17, 17
18
], ],
"starting_column": 1, "starting_column": 5,
"ending_column": 2 "ending_column": 6
},
"contract": {
"type": "contract",
"name": "Constant",
"source_mapping": {
"start": 0,
"length": 253,
"filename_used": "/home/travis/build/crytic/slither/tests/constant-0.5.1.sol",
"filename_relative": "tests/constant-0.5.1.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/constant-0.5.1.sol",
"filename_short": "tests/constant-0.5.1.sol",
"lines": [
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18
],
"starting_column": 1,
"ending_column": 2
}
} }
},
{
"type": "info",
"contains_assembly": true
} }
}, ]
{ }
"type": "info", ]
"contains_assembly": true }
}
]
}
]

@ -1,252 +1,256 @@
[ {
{ "success": true,
"check": "constant-function", "error": null,
"impact": "Medium", "results": [
"confidence": "Medium", {
"description": "Constant.test_view_bug (tests/constant.sol#5-7) is declared view but changes state variables:\n\t- Constant.a\n", "check": "constant-function",
"elements": [ "impact": "Medium",
{ "confidence": "Medium",
"type": "function", "description": "Constant.test_view_bug (tests/constant.sol#5-7) is declared view but changes state variables:\n\t- Constant.a\n",
"name": "test_view_bug", "elements": [
"source_mapping": { {
"start": 45, "type": "function",
"length": 58, "name": "test_view_bug",
"filename_used": "/home/travis/build/crytic/slither/tests/constant.sol",
"filename_relative": "tests/constant.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/constant.sol",
"filename_short": "tests/constant.sol",
"lines": [
5,
6,
7
],
"starting_column": 5,
"ending_column": 6
},
"contract": {
"type": "contract",
"name": "Constant",
"source_mapping": { "source_mapping": {
"start": 0, "start": 45,
"length": 392, "length": 58,
"filename_used": "/home/travis/build/crytic/slither/tests/constant.sol", "filename_used": "/home/travis/build/crytic/slither/tests/constant.sol",
"filename_relative": "tests/constant.sol", "filename_relative": "tests/constant.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/constant.sol", "filename_absolute": "/home/travis/build/crytic/slither/tests/constant.sol",
"filename_short": "tests/constant.sol", "filename_short": "tests/constant.sol",
"lines": [ "lines": [
1,
2,
3,
4,
5, 5,
6, 6,
7, 7
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20,
21,
22,
23,
24,
25
], ],
"starting_column": 1, "starting_column": 5,
"ending_column": 2 "ending_column": 6
},
"contract": {
"type": "contract",
"name": "Constant",
"source_mapping": {
"start": 0,
"length": 392,
"filename_used": "/home/travis/build/crytic/slither/tests/constant.sol",
"filename_relative": "tests/constant.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/constant.sol",
"filename_short": "tests/constant.sol",
"lines": [
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20,
21,
22,
23,
24,
25
],
"starting_column": 1,
"ending_column": 2
}
} }
}
},
{
"type": "variable",
"name": "a",
"source_mapping": {
"start": 28,
"length": 6,
"filename_used": "/home/travis/build/crytic/slither/tests/constant.sol",
"filename_relative": "tests/constant.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/constant.sol",
"filename_short": "tests/constant.sol",
"lines": [
3
],
"starting_column": 5,
"ending_column": 11
}
},
{
"type": "info",
"contains_assembly": false
}
]
},
{
"check": "constant-function",
"impact": "Medium",
"confidence": "Medium",
"description": "Constant.test_constant_bug (tests/constant.sol#9-11) is declared view but changes state variables:\n\t- Constant.a\n",
"elements": [
{
"type": "function",
"name": "test_constant_bug",
"source_mapping": {
"start": 113,
"length": 66,
"filename_used": "/home/travis/build/crytic/slither/tests/constant.sol",
"filename_relative": "tests/constant.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/constant.sol",
"filename_short": "tests/constant.sol",
"lines": [
9,
10,
11
],
"starting_column": 5,
"ending_column": 6
}, },
"contract": { {
"type": "contract", "type": "variable",
"name": "Constant", "name": "a",
"source_mapping": { "source_mapping": {
"start": 0, "start": 28,
"length": 392, "length": 6,
"filename_used": "/home/travis/build/crytic/slither/tests/constant.sol", "filename_used": "/home/travis/build/crytic/slither/tests/constant.sol",
"filename_relative": "tests/constant.sol", "filename_relative": "tests/constant.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/constant.sol", "filename_absolute": "/home/travis/build/crytic/slither/tests/constant.sol",
"filename_short": "tests/constant.sol", "filename_short": "tests/constant.sol",
"lines": [ "lines": [
1, 3
2,
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20,
21,
22,
23,
24,
25
], ],
"starting_column": 1, "starting_column": 5,
"ending_column": 2 "ending_column": 11
} }
}
},
{
"type": "variable",
"name": "a",
"source_mapping": {
"start": 28,
"length": 6,
"filename_used": "/home/travis/build/crytic/slither/tests/constant.sol",
"filename_relative": "tests/constant.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/constant.sol",
"filename_short": "tests/constant.sol",
"lines": [
3
],
"starting_column": 5,
"ending_column": 11
}
},
{
"type": "info",
"contains_assembly": false
}
]
},
{
"check": "constant-function",
"impact": "Medium",
"confidence": "Medium",
"description": "Constant.test_assembly_bug (tests/constant.sol#22-24) is declared view but contains assembly code\n",
"elements": [
{
"type": "function",
"name": "test_assembly_bug",
"source_mapping": {
"start": 324,
"length": 66,
"filename_used": "/home/travis/build/crytic/slither/tests/constant.sol",
"filename_relative": "tests/constant.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/constant.sol",
"filename_short": "tests/constant.sol",
"lines": [
22,
23,
24
],
"starting_column": 5,
"ending_column": 6
}, },
"contract": { {
"type": "contract", "type": "info",
"name": "Constant", "contains_assembly": false
}
]
},
{
"check": "constant-function",
"impact": "Medium",
"confidence": "Medium",
"description": "Constant.test_constant_bug (tests/constant.sol#9-11) is declared view but changes state variables:\n\t- Constant.a\n",
"elements": [
{
"type": "function",
"name": "test_constant_bug",
"source_mapping": { "source_mapping": {
"start": 0, "start": 113,
"length": 392, "length": 66,
"filename_used": "/home/travis/build/crytic/slither/tests/constant.sol", "filename_used": "/home/travis/build/crytic/slither/tests/constant.sol",
"filename_relative": "tests/constant.sol", "filename_relative": "tests/constant.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/constant.sol", "filename_absolute": "/home/travis/build/crytic/slither/tests/constant.sol",
"filename_short": "tests/constant.sol", "filename_short": "tests/constant.sol",
"lines": [ "lines": [
1,
2,
3,
4,
5,
6,
7,
8,
9, 9,
10, 10,
11, 11
12, ],
13, "starting_column": 5,
14, "ending_column": 6
15, },
16, "contract": {
17, "type": "contract",
18, "name": "Constant",
19, "source_mapping": {
20, "start": 0,
21, "length": 392,
"filename_used": "/home/travis/build/crytic/slither/tests/constant.sol",
"filename_relative": "tests/constant.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/constant.sol",
"filename_short": "tests/constant.sol",
"lines": [
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20,
21,
22,
23,
24,
25
],
"starting_column": 1,
"ending_column": 2
}
}
},
{
"type": "variable",
"name": "a",
"source_mapping": {
"start": 28,
"length": 6,
"filename_used": "/home/travis/build/crytic/slither/tests/constant.sol",
"filename_relative": "tests/constant.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/constant.sol",
"filename_short": "tests/constant.sol",
"lines": [
3
],
"starting_column": 5,
"ending_column": 11
}
},
{
"type": "info",
"contains_assembly": false
}
]
},
{
"check": "constant-function",
"impact": "Medium",
"confidence": "Medium",
"description": "Constant.test_assembly_bug (tests/constant.sol#22-24) is declared view but contains assembly code\n",
"elements": [
{
"type": "function",
"name": "test_assembly_bug",
"source_mapping": {
"start": 324,
"length": 66,
"filename_used": "/home/travis/build/crytic/slither/tests/constant.sol",
"filename_relative": "tests/constant.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/constant.sol",
"filename_short": "tests/constant.sol",
"lines": [
22, 22,
23, 23,
24, 24
25
], ],
"starting_column": 1, "starting_column": 5,
"ending_column": 2 "ending_column": 6
},
"contract": {
"type": "contract",
"name": "Constant",
"source_mapping": {
"start": 0,
"length": 392,
"filename_used": "/home/travis/build/crytic/slither/tests/constant.sol",
"filename_relative": "tests/constant.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/constant.sol",
"filename_short": "tests/constant.sol",
"lines": [
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20,
21,
22,
23,
24,
25
],
"starting_column": 1,
"ending_column": 2
}
} }
},
{
"type": "info",
"contains_assembly": true
} }
}, ]
{ }
"type": "info", ]
"contains_assembly": true }
}
]
}
]

@ -1,173 +1,177 @@
[ {
{ "success": true,
"check": "controlled-delegatecall", "error": null,
"impact": "High", "results": [
"confidence": "Medium", {
"description": "C.bad_delegate_call (tests/controlled_delegatecall.sol#8-11) uses delegatecall to a input-controlled function id\n\taddr_bad.delegatecall(data) (tests/controlled_delegatecall.sol#10)\n", "check": "controlled-delegatecall",
"elements": [ "impact": "High",
{ "confidence": "Medium",
"type": "function", "description": "C.bad_delegate_call (tests/controlled_delegatecall.sol#8-11) uses delegatecall to a input-controlled function id\n\taddr_bad.delegatecall(data) (tests/controlled_delegatecall.sol#10)\n",
"name": "bad_delegate_call", "elements": [
"source_mapping": { {
"start": 101, "type": "function",
"length": 134, "name": "bad_delegate_call",
"filename_used": "/home/travis/build/crytic/slither/tests/controlled_delegatecall.sol",
"filename_relative": "tests/controlled_delegatecall.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/controlled_delegatecall.sol",
"filename_short": "tests/controlled_delegatecall.sol",
"lines": [
8,
9,
10,
11
],
"starting_column": 5,
"ending_column": 6
},
"contract": {
"type": "contract",
"name": "C",
"source_mapping": { "source_mapping": {
"start": 0, "start": 101,
"length": 585, "length": 134,
"filename_used": "/home/travis/build/crytic/slither/tests/controlled_delegatecall.sol", "filename_used": "/home/travis/build/crytic/slither/tests/controlled_delegatecall.sol",
"filename_relative": "tests/controlled_delegatecall.sol", "filename_relative": "tests/controlled_delegatecall.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/controlled_delegatecall.sol", "filename_absolute": "/home/travis/build/crytic/slither/tests/controlled_delegatecall.sol",
"filename_short": "tests/controlled_delegatecall.sol", "filename_short": "tests/controlled_delegatecall.sol",
"lines": [ "lines": [
1,
2,
3,
4,
5,
6,
7,
8, 8,
9, 9,
10, 10,
11, 11
12,
13,
14,
15,
16,
17,
18,
19,
20,
21,
22,
23,
24,
25
], ],
"starting_column": 1, "starting_column": 5,
"ending_column": 2 "ending_column": 6
},
"contract": {
"type": "contract",
"name": "C",
"source_mapping": {
"start": 0,
"length": 585,
"filename_used": "/home/travis/build/crytic/slither/tests/controlled_delegatecall.sol",
"filename_relative": "tests/controlled_delegatecall.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/controlled_delegatecall.sol",
"filename_short": "tests/controlled_delegatecall.sol",
"lines": [
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20,
21,
22,
23,
24,
25
],
"starting_column": 1,
"ending_column": 2
}
} }
}
},
{
"type": "expression",
"expression": "addr_bad.delegatecall(data)",
"source_mapping": {
"start": 201,
"length": 27,
"filename_used": "/home/travis/build/crytic/slither/tests/controlled_delegatecall.sol",
"filename_relative": "tests/controlled_delegatecall.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/controlled_delegatecall.sol",
"filename_short": "tests/controlled_delegatecall.sol",
"lines": [
10
],
"starting_column": 9,
"ending_column": 36
}
}
]
},
{
"check": "controlled-delegatecall",
"impact": "High",
"confidence": "Medium",
"description": "C.bad_delegate_call2 (tests/controlled_delegatecall.sol#18-20) uses delegatecall to a input-controlled function id\n\taddr_bad.delegatecall(abi.encode(func_id,data)) (tests/controlled_delegatecall.sol#19)\n",
"elements": [
{
"type": "function",
"name": "bad_delegate_call2",
"source_mapping": {
"start": 337,
"length": 118,
"filename_used": "/home/travis/build/crytic/slither/tests/controlled_delegatecall.sol",
"filename_relative": "tests/controlled_delegatecall.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/controlled_delegatecall.sol",
"filename_short": "tests/controlled_delegatecall.sol",
"lines": [
18,
19,
20
],
"starting_column": 5,
"ending_column": 6
}, },
"contract": { {
"type": "contract", "type": "expression",
"name": "C", "expression": "addr_bad.delegatecall(data)",
"source_mapping": { "source_mapping": {
"start": 0, "start": 201,
"length": 585, "length": 27,
"filename_used": "/home/travis/build/crytic/slither/tests/controlled_delegatecall.sol",
"filename_relative": "tests/controlled_delegatecall.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/controlled_delegatecall.sol",
"filename_short": "tests/controlled_delegatecall.sol",
"lines": [
10
],
"starting_column": 9,
"ending_column": 36
}
}
]
},
{
"check": "controlled-delegatecall",
"impact": "High",
"confidence": "Medium",
"description": "C.bad_delegate_call2 (tests/controlled_delegatecall.sol#18-20) uses delegatecall to a input-controlled function id\n\taddr_bad.delegatecall(abi.encode(func_id,data)) (tests/controlled_delegatecall.sol#19)\n",
"elements": [
{
"type": "function",
"name": "bad_delegate_call2",
"source_mapping": {
"start": 337,
"length": 118,
"filename_used": "/home/travis/build/crytic/slither/tests/controlled_delegatecall.sol", "filename_used": "/home/travis/build/crytic/slither/tests/controlled_delegatecall.sol",
"filename_relative": "tests/controlled_delegatecall.sol", "filename_relative": "tests/controlled_delegatecall.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/controlled_delegatecall.sol", "filename_absolute": "/home/travis/build/crytic/slither/tests/controlled_delegatecall.sol",
"filename_short": "tests/controlled_delegatecall.sol", "filename_short": "tests/controlled_delegatecall.sol",
"lines": [ "lines": [
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18, 18,
19, 19,
20, 20
21,
22,
23,
24,
25
], ],
"starting_column": 1, "starting_column": 5,
"ending_column": 2 "ending_column": 6
},
"contract": {
"type": "contract",
"name": "C",
"source_mapping": {
"start": 0,
"length": 585,
"filename_used": "/home/travis/build/crytic/slither/tests/controlled_delegatecall.sol",
"filename_relative": "tests/controlled_delegatecall.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/controlled_delegatecall.sol",
"filename_short": "tests/controlled_delegatecall.sol",
"lines": [
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20,
21,
22,
23,
24,
25
],
"starting_column": 1,
"ending_column": 2
}
}
},
{
"type": "expression",
"expression": "addr_bad.delegatecall(abi.encode(func_id,data))",
"source_mapping": {
"start": 400,
"length": 48,
"filename_used": "/home/travis/build/crytic/slither/tests/controlled_delegatecall.sol",
"filename_relative": "tests/controlled_delegatecall.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/controlled_delegatecall.sol",
"filename_short": "tests/controlled_delegatecall.sol",
"lines": [
19
],
"starting_column": 9,
"ending_column": 57
} }
} }
}, ]
{ }
"type": "expression", ]
"expression": "addr_bad.delegatecall(abi.encode(func_id,data))", }
"source_mapping": {
"start": 400,
"length": 48,
"filename_used": "/home/travis/build/crytic/slither/tests/controlled_delegatecall.sol",
"filename_relative": "tests/controlled_delegatecall.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/controlled_delegatecall.sol",
"filename_short": "tests/controlled_delegatecall.sol",
"lines": [
19
],
"starting_column": 9,
"ending_column": 57
}
}
]
}
]

@ -1,180 +1,184 @@
[ {
{ "success": true,
"check": "deprecated-standards", "error": null,
"impact": "Informational", "results": [
"confidence": "High", {
"description": "Deprecated standard detected @ tests/deprecated_calls.sol#2:\n\t- Usage of \"block.blockhash()\" should be replaced with \"blockhash()\"\n", "check": "deprecated-standards",
"elements": [ "impact": "Informational",
{ "confidence": "High",
"type": "variable", "description": "Deprecated standard detected @ tests/deprecated_calls.sol#2:\n\t- Usage of \"block.blockhash()\" should be replaced with \"blockhash()\"\n",
"name": "globalBlockHash", "elements": [
"source_mapping": { {
"start": 48, "type": "variable",
"length": 44, "name": "globalBlockHash",
"filename_used": "/home/travis/build/crytic/slither/tests/deprecated_calls.sol", "source_mapping": {
"filename_relative": "tests/deprecated_calls.sol", "start": 48,
"filename_absolute": "/home/travis/build/crytic/slither/tests/deprecated_calls.sol", "length": 44,
"filename_short": "tests/deprecated_calls.sol", "filename_used": "/home/travis/build/crytic/slither/tests/deprecated_calls.sol",
"lines": [ "filename_relative": "tests/deprecated_calls.sol",
2 "filename_absolute": "/home/travis/build/crytic/slither/tests/deprecated_calls.sol",
], "filename_short": "tests/deprecated_calls.sol",
"starting_column": 5, "lines": [
"ending_column": 49 2
],
"starting_column": 5,
"ending_column": 49
}
} }
} ]
] },
}, {
{ "check": "deprecated-standards",
"check": "deprecated-standards", "impact": "Informational",
"impact": "Informational", "confidence": "High",
"confidence": "High", "description": "Deprecated standard detected @ tests/deprecated_calls.sol#7-10:\n\t- Usage of \"msg.gas\" should be replaced with \"gasleft()\"\n",
"description": "Deprecated standard detected @ tests/deprecated_calls.sol#7-10:\n\t- Usage of \"msg.gas\" should be replaced with \"gasleft()\"\n", "elements": [
"elements": [ {
{ "type": "expression",
"type": "expression", "expression": "msg.gas == msg.value",
"expression": "msg.gas == msg.value", "source_mapping": {
"source_mapping": { "start": 258,
"start": 258, "length": 107,
"length": 107, "filename_used": "/home/travis/build/crytic/slither/tests/deprecated_calls.sol",
"filename_used": "/home/travis/build/crytic/slither/tests/deprecated_calls.sol", "filename_relative": "tests/deprecated_calls.sol",
"filename_relative": "tests/deprecated_calls.sol", "filename_absolute": "/home/travis/build/crytic/slither/tests/deprecated_calls.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/deprecated_calls.sol", "filename_short": "tests/deprecated_calls.sol",
"filename_short": "tests/deprecated_calls.sol", "lines": [
"lines": [ 7,
7, 8,
8, 9,
9, 10
10 ],
], "starting_column": 9,
"starting_column": 9, "ending_column": 10
"ending_column": 10 }
} }
} ]
] },
}, {
{ "check": "deprecated-standards",
"check": "deprecated-standards", "impact": "Informational",
"impact": "Informational", "confidence": "High",
"confidence": "High", "description": "Deprecated standard detected @ tests/deprecated_calls.sol#9:\n\t- Usage of \"throw\" should be replaced with \"revert()\"\n",
"description": "Deprecated standard detected @ tests/deprecated_calls.sol#9:\n\t- Usage of \"throw\" should be replaced with \"revert()\"\n", "elements": [
"elements": [ {
{ "type": "expression",
"type": "expression", "expression": "None",
"expression": "None", "source_mapping": {
"source_mapping": { "start": 349,
"start": 349, "length": 5,
"length": 5, "filename_used": "/home/travis/build/crytic/slither/tests/deprecated_calls.sol",
"filename_used": "/home/travis/build/crytic/slither/tests/deprecated_calls.sol", "filename_relative": "tests/deprecated_calls.sol",
"filename_relative": "tests/deprecated_calls.sol", "filename_absolute": "/home/travis/build/crytic/slither/tests/deprecated_calls.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/deprecated_calls.sol", "filename_short": "tests/deprecated_calls.sol",
"filename_short": "tests/deprecated_calls.sol", "lines": [
"lines": [ 9
9 ],
], "starting_column": 13,
"starting_column": 13, "ending_column": 18
"ending_column": 18 }
} }
} ]
] },
}, {
{ "check": "deprecated-standards",
"check": "deprecated-standards", "impact": "Informational",
"impact": "Informational", "confidence": "High",
"confidence": "High", "description": "Deprecated standard detected @ tests/deprecated_calls.sol#16:\n\t- Usage of \"sha3()\" should be replaced with \"keccak256()\"\n",
"description": "Deprecated standard detected @ tests/deprecated_calls.sol#16:\n\t- Usage of \"sha3()\" should be replaced with \"keccak256()\"\n", "elements": [
"elements": [ {
{ "type": "expression",
"type": "expression", "expression": "sha3Result = sha3()(test deprecated sha3 usage)",
"expression": "sha3Result = sha3()(test deprecated sha3 usage)", "source_mapping": {
"source_mapping": { "start": 542,
"start": 542, "length": 55,
"length": 55, "filename_used": "/home/travis/build/crytic/slither/tests/deprecated_calls.sol",
"filename_used": "/home/travis/build/crytic/slither/tests/deprecated_calls.sol", "filename_relative": "tests/deprecated_calls.sol",
"filename_relative": "tests/deprecated_calls.sol", "filename_absolute": "/home/travis/build/crytic/slither/tests/deprecated_calls.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/deprecated_calls.sol", "filename_short": "tests/deprecated_calls.sol",
"filename_short": "tests/deprecated_calls.sol", "lines": [
"lines": [ 16
16 ],
], "starting_column": 9,
"starting_column": 9, "ending_column": 64
"ending_column": 64 }
} }
} ]
] },
}, {
{ "check": "deprecated-standards",
"check": "deprecated-standards", "impact": "Informational",
"impact": "Informational", "confidence": "High",
"confidence": "High", "description": "Deprecated standard detected @ tests/deprecated_calls.sol#19:\n\t- Usage of \"block.blockhash()\" should be replaced with \"blockhash()\"\n",
"description": "Deprecated standard detected @ tests/deprecated_calls.sol#19:\n\t- Usage of \"block.blockhash()\" should be replaced with \"blockhash()\"\n", "elements": [
"elements": [ {
{ "type": "expression",
"type": "expression", "expression": "blockHashResult = block.blockhash(0)",
"expression": "blockHashResult = block.blockhash(0)", "source_mapping": {
"source_mapping": { "start": 671,
"start": 671, "length": 44,
"length": 44, "filename_used": "/home/travis/build/crytic/slither/tests/deprecated_calls.sol",
"filename_used": "/home/travis/build/crytic/slither/tests/deprecated_calls.sol", "filename_relative": "tests/deprecated_calls.sol",
"filename_relative": "tests/deprecated_calls.sol", "filename_absolute": "/home/travis/build/crytic/slither/tests/deprecated_calls.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/deprecated_calls.sol", "filename_short": "tests/deprecated_calls.sol",
"filename_short": "tests/deprecated_calls.sol", "lines": [
"lines": [ 19
19 ],
], "starting_column": 9,
"starting_column": 9, "ending_column": 53
"ending_column": 53 }
} }
} ]
] },
}, {
{ "check": "deprecated-standards",
"check": "deprecated-standards", "impact": "Informational",
"impact": "Informational", "confidence": "High",
"confidence": "High", "description": "Deprecated standard detected @ tests/deprecated_calls.sol#22:\n\t- Usage of \"callcode\" should be replaced with \"delegatecall\"\n",
"description": "Deprecated standard detected @ tests/deprecated_calls.sol#22:\n\t- Usage of \"callcode\" should be replaced with \"delegatecall\"\n", "elements": [
"elements": [ {
{ "type": "expression",
"type": "expression", "expression": "address(this).callcode()",
"expression": "address(this).callcode()", "source_mapping": {
"source_mapping": { "start": 785,
"start": 785, "length": 24,
"length": 24, "filename_used": "/home/travis/build/crytic/slither/tests/deprecated_calls.sol",
"filename_used": "/home/travis/build/crytic/slither/tests/deprecated_calls.sol", "filename_relative": "tests/deprecated_calls.sol",
"filename_relative": "tests/deprecated_calls.sol", "filename_absolute": "/home/travis/build/crytic/slither/tests/deprecated_calls.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/deprecated_calls.sol", "filename_short": "tests/deprecated_calls.sol",
"filename_short": "tests/deprecated_calls.sol", "lines": [
"lines": [ 22
22 ],
], "starting_column": 9,
"starting_column": 9, "ending_column": 33
"ending_column": 33 }
} }
} ]
] },
}, {
{ "check": "deprecated-standards",
"check": "deprecated-standards", "impact": "Informational",
"impact": "Informational", "confidence": "High",
"confidence": "High", "description": "Deprecated standard detected @ tests/deprecated_calls.sol#25:\n\t- Usage of \"suicide()\" should be replaced with \"selfdestruct()\"\n",
"description": "Deprecated standard detected @ tests/deprecated_calls.sol#25:\n\t- Usage of \"suicide()\" should be replaced with \"selfdestruct()\"\n", "elements": [
"elements": [ {
{ "type": "expression",
"type": "expression", "expression": "suicide(address)(address(0))",
"expression": "suicide(address)(address(0))", "source_mapping": {
"source_mapping": { "start": 878,
"start": 878, "length": 19,
"length": 19, "filename_used": "/home/travis/build/crytic/slither/tests/deprecated_calls.sol",
"filename_used": "/home/travis/build/crytic/slither/tests/deprecated_calls.sol", "filename_relative": "tests/deprecated_calls.sol",
"filename_relative": "tests/deprecated_calls.sol", "filename_absolute": "/home/travis/build/crytic/slither/tests/deprecated_calls.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/deprecated_calls.sol", "filename_short": "tests/deprecated_calls.sol",
"filename_short": "tests/deprecated_calls.sol", "lines": [
"lines": [ 25
25 ],
], "starting_column": 9,
"starting_column": 9, "ending_column": 28
"ending_column": 28 }
} }
} ]
] }
} ]
] }

@ -1,182 +1,186 @@
[ {
{ "success": true,
"check": "erc20-indexed", "error": null,
"impact": "Informational", "results": [
"confidence": "High", {
"description": "IERC20Bad (tests/erc20_indexed.sol#12-21) does not mark important ERC20 parameters as 'indexed':\n\t-Transfer (tests/erc20_indexed.sol#19) does not index parameter 'from'\n\t-Transfer (tests/erc20_indexed.sol#19) does not index parameter 'to'\n\t-Approval (tests/erc20_indexed.sol#20) does not index parameter 'owner'\n\t-Approval (tests/erc20_indexed.sol#20) does not index parameter 'spender'\n", "check": "erc20-indexed",
"elements": [ "impact": "Informational",
{ "confidence": "High",
"type": "function", "description": "IERC20Bad (tests/erc20_indexed.sol#12-21) does not mark important ERC20 parameters as 'indexed':\n\t-Transfer (tests/erc20_indexed.sol#19) does not index parameter 'from'\n\t-Transfer (tests/erc20_indexed.sol#19) does not index parameter 'to'\n\t-Approval (tests/erc20_indexed.sol#20) does not index parameter 'owner'\n\t-Approval (tests/erc20_indexed.sol#20) does not index parameter 'spender'\n",
"name": "Approval", "elements": [
"source_mapping": { {
"start": 1148, "type": "function",
"length": 59, "name": "Approval",
"filename_used": "/home/travis/build/crytic/slither/tests/erc20_indexed.sol",
"filename_relative": "tests/erc20_indexed.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/erc20_indexed.sol",
"filename_short": "tests/erc20_indexed.sol",
"lines": [
20
],
"starting_column": 5,
"ending_column": 64
},
"contract": {
"type": "contract",
"name": "IERC20Bad",
"source_mapping": { "source_mapping": {
"start": 622, "start": 1148,
"length": 587, "length": 59,
"filename_used": "/home/travis/build/crytic/slither/tests/erc20_indexed.sol", "filename_used": "/home/travis/build/crytic/slither/tests/erc20_indexed.sol",
"filename_relative": "tests/erc20_indexed.sol", "filename_relative": "tests/erc20_indexed.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/erc20_indexed.sol", "filename_absolute": "/home/travis/build/crytic/slither/tests/erc20_indexed.sol",
"filename_short": "tests/erc20_indexed.sol", "filename_short": "tests/erc20_indexed.sol",
"lines": [ "lines": [
12, 20
13,
14,
15,
16,
17,
18,
19,
20,
21
], ],
"starting_column": 1, "starting_column": 5,
"ending_column": 2 "ending_column": 64
},
"contract": {
"type": "contract",
"name": "IERC20Bad",
"source_mapping": {
"start": 622,
"length": 587,
"filename_used": "/home/travis/build/crytic/slither/tests/erc20_indexed.sol",
"filename_relative": "tests/erc20_indexed.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/erc20_indexed.sol",
"filename_short": "tests/erc20_indexed.sol",
"lines": [
12,
13,
14,
15,
16,
17,
18,
19,
20,
21
],
"starting_column": 1,
"ending_column": 2
}
} }
}
},
{
"type": "function",
"name": "Approval",
"source_mapping": {
"start": 1148,
"length": 59,
"filename_used": "/home/travis/build/crytic/slither/tests/erc20_indexed.sol",
"filename_relative": "tests/erc20_indexed.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/erc20_indexed.sol",
"filename_short": "tests/erc20_indexed.sol",
"lines": [
20
],
"starting_column": 5,
"ending_column": 64
}, },
"contract": { {
"type": "contract", "type": "function",
"name": "IERC20Bad", "name": "Approval",
"source_mapping": { "source_mapping": {
"start": 622, "start": 1148,
"length": 587, "length": 59,
"filename_used": "/home/travis/build/crytic/slither/tests/erc20_indexed.sol", "filename_used": "/home/travis/build/crytic/slither/tests/erc20_indexed.sol",
"filename_relative": "tests/erc20_indexed.sol", "filename_relative": "tests/erc20_indexed.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/erc20_indexed.sol", "filename_absolute": "/home/travis/build/crytic/slither/tests/erc20_indexed.sol",
"filename_short": "tests/erc20_indexed.sol", "filename_short": "tests/erc20_indexed.sol",
"lines": [ "lines": [
12, 20
13,
14,
15,
16,
17,
18,
19,
20,
21
], ],
"starting_column": 1, "starting_column": 5,
"ending_column": 2 "ending_column": 64
},
"contract": {
"type": "contract",
"name": "IERC20Bad",
"source_mapping": {
"start": 622,
"length": 587,
"filename_used": "/home/travis/build/crytic/slither/tests/erc20_indexed.sol",
"filename_relative": "tests/erc20_indexed.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/erc20_indexed.sol",
"filename_short": "tests/erc20_indexed.sol",
"lines": [
12,
13,
14,
15,
16,
17,
18,
19,
20,
21
],
"starting_column": 1,
"ending_column": 2
}
} }
}
},
{
"type": "function",
"name": "Transfer",
"source_mapping": {
"start": 1090,
"length": 53,
"filename_used": "/home/travis/build/crytic/slither/tests/erc20_indexed.sol",
"filename_relative": "tests/erc20_indexed.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/erc20_indexed.sol",
"filename_short": "tests/erc20_indexed.sol",
"lines": [
19
],
"starting_column": 5,
"ending_column": 58
}, },
"contract": { {
"type": "contract", "type": "function",
"name": "IERC20Bad", "name": "Transfer",
"source_mapping": { "source_mapping": {
"start": 622, "start": 1090,
"length": 587, "length": 53,
"filename_used": "/home/travis/build/crytic/slither/tests/erc20_indexed.sol", "filename_used": "/home/travis/build/crytic/slither/tests/erc20_indexed.sol",
"filename_relative": "tests/erc20_indexed.sol", "filename_relative": "tests/erc20_indexed.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/erc20_indexed.sol", "filename_absolute": "/home/travis/build/crytic/slither/tests/erc20_indexed.sol",
"filename_short": "tests/erc20_indexed.sol", "filename_short": "tests/erc20_indexed.sol",
"lines": [ "lines": [
12, 19
13,
14,
15,
16,
17,
18,
19,
20,
21
], ],
"starting_column": 1, "starting_column": 5,
"ending_column": 2 "ending_column": 58
},
"contract": {
"type": "contract",
"name": "IERC20Bad",
"source_mapping": {
"start": 622,
"length": 587,
"filename_used": "/home/travis/build/crytic/slither/tests/erc20_indexed.sol",
"filename_relative": "tests/erc20_indexed.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/erc20_indexed.sol",
"filename_short": "tests/erc20_indexed.sol",
"lines": [
12,
13,
14,
15,
16,
17,
18,
19,
20,
21
],
"starting_column": 1,
"ending_column": 2
}
} }
}
},
{
"type": "function",
"name": "Transfer",
"source_mapping": {
"start": 1090,
"length": 53,
"filename_used": "/home/travis/build/crytic/slither/tests/erc20_indexed.sol",
"filename_relative": "tests/erc20_indexed.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/erc20_indexed.sol",
"filename_short": "tests/erc20_indexed.sol",
"lines": [
19
],
"starting_column": 5,
"ending_column": 58
}, },
"contract": { {
"type": "contract", "type": "function",
"name": "IERC20Bad", "name": "Transfer",
"source_mapping": { "source_mapping": {
"start": 622, "start": 1090,
"length": 587, "length": 53,
"filename_used": "/home/travis/build/crytic/slither/tests/erc20_indexed.sol", "filename_used": "/home/travis/build/crytic/slither/tests/erc20_indexed.sol",
"filename_relative": "tests/erc20_indexed.sol", "filename_relative": "tests/erc20_indexed.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/erc20_indexed.sol", "filename_absolute": "/home/travis/build/crytic/slither/tests/erc20_indexed.sol",
"filename_short": "tests/erc20_indexed.sol", "filename_short": "tests/erc20_indexed.sol",
"lines": [ "lines": [
12, 19
13,
14,
15,
16,
17,
18,
19,
20,
21
], ],
"starting_column": 1, "starting_column": 5,
"ending_column": 2 "ending_column": 58
},
"contract": {
"type": "contract",
"name": "IERC20Bad",
"source_mapping": {
"start": 622,
"length": 587,
"filename_used": "/home/travis/build/crytic/slither/tests/erc20_indexed.sol",
"filename_relative": "tests/erc20_indexed.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/erc20_indexed.sol",
"filename_short": "tests/erc20_indexed.sol",
"lines": [
12,
13,
14,
15,
16,
17,
18,
19,
20,
21
],
"starting_column": 1,
"ending_column": 2
}
} }
} }
} ]
] }
} ]
] }

@ -1,231 +1,210 @@
[ {
{ "success": true,
"check": "external-function", "error": null,
"impact": "Informational", "results": [
"confidence": "High", {
"description": "ContractWithFunctionNotCalled.funcNotCalled3 (tests/external_function.sol#13-15) should be declared external\n", "check": "external-function",
"elements": [ "impact": "Informational",
{ "confidence": "High",
"type": "function", "description": "ContractWithFunctionNotCalled.funcNotCalled3 (tests/external_function.sol#13-15) should be declared external\n",
"name": "funcNotCalled3", "elements": [
"source_mapping": { {
"start": 259, "type": "function",
"length": 41, "name": "funcNotCalled3",
"filename_used": "/home/travis/build/crytic/slither/tests/external_function.sol",
"filename_relative": "tests/external_function.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/external_function.sol",
"filename_short": "tests/external_function.sol",
"lines": [
13,
14,
15
],
"starting_column": 5,
"ending_column": 6
},
"contract": {
"type": "contract",
"name": "ContractWithFunctionNotCalled",
"source_mapping": { "source_mapping": {
"start": 213, "start": 259,
"length": 258, "length": 41,
"filename_used": "/home/travis/build/crytic/slither/tests/external_function.sol", "filename_used": "/home/travis/build/crytic/slither/tests/external_function.sol",
"filename_relative": "tests/external_function.sol", "filename_relative": "tests/external_function.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/external_function.sol", "filename_absolute": "/home/travis/build/crytic/slither/tests/external_function.sol",
"filename_short": "tests/external_function.sol", "filename_short": "tests/external_function.sol",
"lines": [ "lines": [
11,
12,
13, 13,
14, 14,
15, 15
16,
17,
18,
19,
20,
21,
22,
23,
24,
25,
26,
27,
28,
29
], ],
"starting_column": 1, "starting_column": 5,
"ending_column": 2 "ending_column": 6
},
"contract": {
"type": "contract",
"name": "ContractWithFunctionNotCalled",
"source_mapping": {
"start": 213,
"length": 258,
"filename_used": "/home/travis/build/crytic/slither/tests/external_function.sol",
"filename_relative": "tests/external_function.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/external_function.sol",
"filename_short": "tests/external_function.sol",
"lines": [
11,
12,
13,
14,
15,
16,
17,
18,
19,
20,
21,
22,
23,
24,
25,
26,
27,
28,
29
],
"starting_column": 1,
"ending_column": 2
}
} }
} }
} ]
] },
}, {
{ "check": "external-function",
"check": "external-function", "impact": "Informational",
"impact": "Informational", "confidence": "High",
"confidence": "High", "description": "ContractWithFunctionNotCalled.funcNotCalled2 (tests/external_function.sol#17-19) should be declared external\n",
"description": "ContractWithFunctionNotCalled.funcNotCalled2 (tests/external_function.sol#17-19) should be declared external\n", "elements": [
"elements": [ {
{ "type": "function",
"type": "function", "name": "funcNotCalled2",
"name": "funcNotCalled2",
"source_mapping": {
"start": 306,
"length": 41,
"filename_used": "/home/travis/build/crytic/slither/tests/external_function.sol",
"filename_relative": "tests/external_function.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/external_function.sol",
"filename_short": "tests/external_function.sol",
"lines": [
17,
18,
19
],
"starting_column": 5,
"ending_column": 6
},
"contract": {
"type": "contract",
"name": "ContractWithFunctionNotCalled",
"source_mapping": { "source_mapping": {
"start": 213, "start": 306,
"length": 258, "length": 41,
"filename_used": "/home/travis/build/crytic/slither/tests/external_function.sol", "filename_used": "/home/travis/build/crytic/slither/tests/external_function.sol",
"filename_relative": "tests/external_function.sol", "filename_relative": "tests/external_function.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/external_function.sol", "filename_absolute": "/home/travis/build/crytic/slither/tests/external_function.sol",
"filename_short": "tests/external_function.sol", "filename_short": "tests/external_function.sol",
"lines": [ "lines": [
11,
12,
13,
14,
15,
16,
17, 17,
18, 18,
19, 19
20,
21,
22,
23,
24,
25,
26,
27,
28,
29
], ],
"starting_column": 1, "starting_column": 5,
"ending_column": 2 "ending_column": 6
},
"contract": {
"type": "contract",
"name": "ContractWithFunctionNotCalled",
"source_mapping": {
"start": 213,
"length": 258,
"filename_used": "/home/travis/build/crytic/slither/tests/external_function.sol",
"filename_relative": "tests/external_function.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/external_function.sol",
"filename_short": "tests/external_function.sol",
"lines": [
11,
12,
13,
14,
15,
16,
17,
18,
19,
20,
21,
22,
23,
24,
25,
26,
27,
28,
29
],
"starting_column": 1,
"ending_column": 2
}
} }
} }
} ]
] },
}, {
{ "check": "external-function",
"check": "external-function", "impact": "Informational",
"impact": "Informational", "confidence": "High",
"confidence": "High", "description": "ContractWithFunctionNotCalled.funcNotCalled (tests/external_function.sol#21-23) should be declared external\n",
"description": "ContractWithFunctionNotCalled.funcNotCalled (tests/external_function.sol#21-23) should be declared external\n", "elements": [
"elements": [ {
{ "type": "function",
"type": "function", "name": "funcNotCalled",
"name": "funcNotCalled",
"source_mapping": {
"start": 353,
"length": 40,
"filename_used": "/home/travis/build/crytic/slither/tests/external_function.sol",
"filename_relative": "tests/external_function.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/external_function.sol",
"filename_short": "tests/external_function.sol",
"lines": [
21,
22,
23
],
"starting_column": 5,
"ending_column": 6
},
"contract": {
"type": "contract",
"name": "ContractWithFunctionNotCalled",
"source_mapping": { "source_mapping": {
"start": 213, "start": 353,
"length": 258, "length": 40,
"filename_used": "/home/travis/build/crytic/slither/tests/external_function.sol", "filename_used": "/home/travis/build/crytic/slither/tests/external_function.sol",
"filename_relative": "tests/external_function.sol", "filename_relative": "tests/external_function.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/external_function.sol", "filename_absolute": "/home/travis/build/crytic/slither/tests/external_function.sol",
"filename_short": "tests/external_function.sol", "filename_short": "tests/external_function.sol",
"lines": [ "lines": [
11,
12,
13,
14,
15,
16,
17,
18,
19,
20,
21, 21,
22, 22,
23, 23
24,
25,
26,
27,
28,
29
], ],
"starting_column": 1, "starting_column": 5,
"ending_column": 2 "ending_column": 6
},
"contract": {
"type": "contract",
"name": "ContractWithFunctionNotCalled",
"source_mapping": {
"start": 213,
"length": 258,
"filename_used": "/home/travis/build/crytic/slither/tests/external_function.sol",
"filename_relative": "tests/external_function.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/external_function.sol",
"filename_short": "tests/external_function.sol",
"lines": [
11,
12,
13,
14,
15,
16,
17,
18,
19,
20,
21,
22,
23,
24,
25,
26,
27,
28,
29
],
"starting_column": 1,
"ending_column": 2
}
} }
} }
} ]
] },
}, {
{ "check": "external-function",
"check": "external-function", "impact": "Informational",
"impact": "Informational", "confidence": "High",
"confidence": "High", "description": "ContractWithFunctionNotCalled2.funcNotCalled (tests/external_function.sol#32-39) should be declared external\n",
"description": "ContractWithFunctionNotCalled2.funcNotCalled (tests/external_function.sol#32-39) should be declared external\n", "elements": [
"elements": [ {
{ "type": "function",
"type": "function", "name": "funcNotCalled",
"name": "funcNotCalled",
"source_mapping": {
"start": 554,
"length": 325,
"filename_used": "/home/travis/build/crytic/slither/tests/external_function.sol",
"filename_relative": "tests/external_function.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/external_function.sol",
"filename_short": "tests/external_function.sol",
"lines": [
32,
33,
34,
35,
36,
37,
38,
39
],
"starting_column": 5,
"ending_column": 6
},
"contract": {
"type": "contract",
"name": "ContractWithFunctionNotCalled2",
"source_mapping": { "source_mapping": {
"start": 473, "start": 554,
"length": 408, "length": 325,
"filename_used": "/home/travis/build/crytic/slither/tests/external_function.sol", "filename_used": "/home/travis/build/crytic/slither/tests/external_function.sol",
"filename_relative": "tests/external_function.sol", "filename_relative": "tests/external_function.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/external_function.sol", "filename_absolute": "/home/travis/build/crytic/slither/tests/external_function.sol",
"filename_short": "tests/external_function.sol", "filename_short": "tests/external_function.sol",
"lines": [ "lines": [
31,
32, 32,
33, 33,
34, 34,
@ -233,14 +212,39 @@
36, 36,
37, 37,
38, 38,
39, 39
40
], ],
"starting_column": 1, "starting_column": 5,
"ending_column": 2 "ending_column": 6
},
"contract": {
"type": "contract",
"name": "ContractWithFunctionNotCalled2",
"source_mapping": {
"start": 473,
"length": 408,
"filename_used": "/home/travis/build/crytic/slither/tests/external_function.sol",
"filename_relative": "tests/external_function.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/external_function.sol",
"filename_short": "tests/external_function.sol",
"lines": [
31,
32,
33,
34,
35,
36,
37,
38,
39,
40
],
"starting_column": 1,
"ending_column": 2
}
} }
} }
} ]
] }
} ]
] }

@ -1 +1,5 @@
[] {
"success": true,
"error": null,
"results": []
}

@ -1,256 +1,260 @@
[ {
{ "success": true,
"check": "erc20-interface", "error": null,
"impact": "Medium", "results": [
"confidence": "High", {
"description": "Token (tests/incorrect_erc20_interface.sol#3-10) has incorrect ERC20 function interface(s):\n\t-transfer (tests/incorrect_erc20_interface.sol#4)\n\t-approve (tests/incorrect_erc20_interface.sol#5)\n\t-transferFrom (tests/incorrect_erc20_interface.sol#6)\n\t-totalSupply (tests/incorrect_erc20_interface.sol#7)\n\t-balanceOf (tests/incorrect_erc20_interface.sol#8)\n\t-allowance (tests/incorrect_erc20_interface.sol#9)\n", "check": "erc20-interface",
"elements": [ "impact": "Medium",
{ "confidence": "High",
"type": "function", "description": "Token (tests/incorrect_erc20_interface.sol#3-10) has incorrect ERC20 function interface(s):\n\t-transfer (tests/incorrect_erc20_interface.sol#4)\n\t-approve (tests/incorrect_erc20_interface.sol#5)\n\t-transferFrom (tests/incorrect_erc20_interface.sol#6)\n\t-totalSupply (tests/incorrect_erc20_interface.sol#7)\n\t-balanceOf (tests/incorrect_erc20_interface.sol#8)\n\t-allowance (tests/incorrect_erc20_interface.sol#9)\n",
"name": "allowance", "elements": [
"source_mapping": { {
"start": 319, "type": "function",
"length": 60, "name": "allowance",
"filename_used": "/home/travis/build/crytic/slither/tests/incorrect_erc20_interface.sol",
"filename_relative": "tests/incorrect_erc20_interface.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/incorrect_erc20_interface.sol",
"filename_short": "tests/incorrect_erc20_interface.sol",
"lines": [
9
],
"starting_column": 5,
"ending_column": 65
},
"contract": {
"type": "contract",
"name": "Token",
"source_mapping": { "source_mapping": {
"start": 26, "start": 319,
"length": 355, "length": 60,
"filename_used": "/home/travis/build/crytic/slither/tests/incorrect_erc20_interface.sol", "filename_used": "/home/travis/build/crytic/slither/tests/incorrect_erc20_interface.sol",
"filename_relative": "tests/incorrect_erc20_interface.sol", "filename_relative": "tests/incorrect_erc20_interface.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/incorrect_erc20_interface.sol", "filename_absolute": "/home/travis/build/crytic/slither/tests/incorrect_erc20_interface.sol",
"filename_short": "tests/incorrect_erc20_interface.sol", "filename_short": "tests/incorrect_erc20_interface.sol",
"lines": [ "lines": [
3, 9
4,
5,
6,
7,
8,
9,
10
], ],
"starting_column": 1, "starting_column": 5,
"ending_column": 2 "ending_column": 65
},
"contract": {
"type": "contract",
"name": "Token",
"source_mapping": {
"start": 26,
"length": 355,
"filename_used": "/home/travis/build/crytic/slither/tests/incorrect_erc20_interface.sol",
"filename_relative": "tests/incorrect_erc20_interface.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/incorrect_erc20_interface.sol",
"filename_short": "tests/incorrect_erc20_interface.sol",
"lines": [
3,
4,
5,
6,
7,
8,
9,
10
],
"starting_column": 1,
"ending_column": 2
}
} }
}
},
{
"type": "function",
"name": "approve",
"source_mapping": {
"start": 102,
"length": 55,
"filename_used": "/home/travis/build/crytic/slither/tests/incorrect_erc20_interface.sol",
"filename_relative": "tests/incorrect_erc20_interface.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/incorrect_erc20_interface.sol",
"filename_short": "tests/incorrect_erc20_interface.sol",
"lines": [
5
],
"starting_column": 5,
"ending_column": 60
}, },
"contract": { {
"type": "contract", "type": "function",
"name": "Token", "name": "approve",
"source_mapping": { "source_mapping": {
"start": 26, "start": 102,
"length": 355, "length": 55,
"filename_used": "/home/travis/build/crytic/slither/tests/incorrect_erc20_interface.sol", "filename_used": "/home/travis/build/crytic/slither/tests/incorrect_erc20_interface.sol",
"filename_relative": "tests/incorrect_erc20_interface.sol", "filename_relative": "tests/incorrect_erc20_interface.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/incorrect_erc20_interface.sol", "filename_absolute": "/home/travis/build/crytic/slither/tests/incorrect_erc20_interface.sol",
"filename_short": "tests/incorrect_erc20_interface.sol", "filename_short": "tests/incorrect_erc20_interface.sol",
"lines": [ "lines": [
3, 5
4,
5,
6,
7,
8,
9,
10
], ],
"starting_column": 1, "starting_column": 5,
"ending_column": 2 "ending_column": 60
},
"contract": {
"type": "contract",
"name": "Token",
"source_mapping": {
"start": 26,
"length": 355,
"filename_used": "/home/travis/build/crytic/slither/tests/incorrect_erc20_interface.sol",
"filename_relative": "tests/incorrect_erc20_interface.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/incorrect_erc20_interface.sol",
"filename_short": "tests/incorrect_erc20_interface.sol",
"lines": [
3,
4,
5,
6,
7,
8,
9,
10
],
"starting_column": 1,
"ending_column": 2
}
} }
}
},
{
"type": "function",
"name": "balanceOf",
"source_mapping": {
"start": 273,
"length": 41,
"filename_used": "/home/travis/build/crytic/slither/tests/incorrect_erc20_interface.sol",
"filename_relative": "tests/incorrect_erc20_interface.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/incorrect_erc20_interface.sol",
"filename_short": "tests/incorrect_erc20_interface.sol",
"lines": [
8
],
"starting_column": 5,
"ending_column": 46
}, },
"contract": { {
"type": "contract", "type": "function",
"name": "Token", "name": "balanceOf",
"source_mapping": { "source_mapping": {
"start": 26, "start": 273,
"length": 355, "length": 41,
"filename_used": "/home/travis/build/crytic/slither/tests/incorrect_erc20_interface.sol", "filename_used": "/home/travis/build/crytic/slither/tests/incorrect_erc20_interface.sol",
"filename_relative": "tests/incorrect_erc20_interface.sol", "filename_relative": "tests/incorrect_erc20_interface.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/incorrect_erc20_interface.sol", "filename_absolute": "/home/travis/build/crytic/slither/tests/incorrect_erc20_interface.sol",
"filename_short": "tests/incorrect_erc20_interface.sol", "filename_short": "tests/incorrect_erc20_interface.sol",
"lines": [ "lines": [
3, 8
4,
5,
6,
7,
8,
9,
10
], ],
"starting_column": 1, "starting_column": 5,
"ending_column": 2 "ending_column": 46
},
"contract": {
"type": "contract",
"name": "Token",
"source_mapping": {
"start": 26,
"length": 355,
"filename_used": "/home/travis/build/crytic/slither/tests/incorrect_erc20_interface.sol",
"filename_relative": "tests/incorrect_erc20_interface.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/incorrect_erc20_interface.sol",
"filename_short": "tests/incorrect_erc20_interface.sol",
"lines": [
3,
4,
5,
6,
7,
8,
9,
10
],
"starting_column": 1,
"ending_column": 2
}
} }
}
},
{
"type": "function",
"name": "totalSupply",
"source_mapping": {
"start": 236,
"length": 32,
"filename_used": "/home/travis/build/crytic/slither/tests/incorrect_erc20_interface.sol",
"filename_relative": "tests/incorrect_erc20_interface.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/incorrect_erc20_interface.sol",
"filename_short": "tests/incorrect_erc20_interface.sol",
"lines": [
7
],
"starting_column": 5,
"ending_column": 37
}, },
"contract": { {
"type": "contract", "type": "function",
"name": "Token", "name": "totalSupply",
"source_mapping": { "source_mapping": {
"start": 26, "start": 236,
"length": 355, "length": 32,
"filename_used": "/home/travis/build/crytic/slither/tests/incorrect_erc20_interface.sol", "filename_used": "/home/travis/build/crytic/slither/tests/incorrect_erc20_interface.sol",
"filename_relative": "tests/incorrect_erc20_interface.sol", "filename_relative": "tests/incorrect_erc20_interface.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/incorrect_erc20_interface.sol", "filename_absolute": "/home/travis/build/crytic/slither/tests/incorrect_erc20_interface.sol",
"filename_short": "tests/incorrect_erc20_interface.sol", "filename_short": "tests/incorrect_erc20_interface.sol",
"lines": [ "lines": [
3, 7
4,
5,
6,
7,
8,
9,
10
], ],
"starting_column": 1, "starting_column": 5,
"ending_column": 2 "ending_column": 37
},
"contract": {
"type": "contract",
"name": "Token",
"source_mapping": {
"start": 26,
"length": 355,
"filename_used": "/home/travis/build/crytic/slither/tests/incorrect_erc20_interface.sol",
"filename_relative": "tests/incorrect_erc20_interface.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/incorrect_erc20_interface.sol",
"filename_short": "tests/incorrect_erc20_interface.sol",
"lines": [
3,
4,
5,
6,
7,
8,
9,
10
],
"starting_column": 1,
"ending_column": 2
}
} }
}
},
{
"type": "function",
"name": "transfer",
"source_mapping": {
"start": 46,
"length": 51,
"filename_used": "/home/travis/build/crytic/slither/tests/incorrect_erc20_interface.sol",
"filename_relative": "tests/incorrect_erc20_interface.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/incorrect_erc20_interface.sol",
"filename_short": "tests/incorrect_erc20_interface.sol",
"lines": [
4
],
"starting_column": 5,
"ending_column": 56
}, },
"contract": { {
"type": "contract", "type": "function",
"name": "Token", "name": "transfer",
"source_mapping": { "source_mapping": {
"start": 26, "start": 46,
"length": 355, "length": 51,
"filename_used": "/home/travis/build/crytic/slither/tests/incorrect_erc20_interface.sol", "filename_used": "/home/travis/build/crytic/slither/tests/incorrect_erc20_interface.sol",
"filename_relative": "tests/incorrect_erc20_interface.sol", "filename_relative": "tests/incorrect_erc20_interface.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/incorrect_erc20_interface.sol", "filename_absolute": "/home/travis/build/crytic/slither/tests/incorrect_erc20_interface.sol",
"filename_short": "tests/incorrect_erc20_interface.sol", "filename_short": "tests/incorrect_erc20_interface.sol",
"lines": [ "lines": [
3, 4
4,
5,
6,
7,
8,
9,
10
], ],
"starting_column": 1, "starting_column": 5,
"ending_column": 2 "ending_column": 56
},
"contract": {
"type": "contract",
"name": "Token",
"source_mapping": {
"start": 26,
"length": 355,
"filename_used": "/home/travis/build/crytic/slither/tests/incorrect_erc20_interface.sol",
"filename_relative": "tests/incorrect_erc20_interface.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/incorrect_erc20_interface.sol",
"filename_short": "tests/incorrect_erc20_interface.sol",
"lines": [
3,
4,
5,
6,
7,
8,
9,
10
],
"starting_column": 1,
"ending_column": 2
}
} }
}
},
{
"type": "function",
"name": "transferFrom",
"source_mapping": {
"start": 162,
"length": 69,
"filename_used": "/home/travis/build/crytic/slither/tests/incorrect_erc20_interface.sol",
"filename_relative": "tests/incorrect_erc20_interface.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/incorrect_erc20_interface.sol",
"filename_short": "tests/incorrect_erc20_interface.sol",
"lines": [
6
],
"starting_column": 5,
"ending_column": 74
}, },
"contract": { {
"type": "contract", "type": "function",
"name": "Token", "name": "transferFrom",
"source_mapping": { "source_mapping": {
"start": 26, "start": 162,
"length": 355, "length": 69,
"filename_used": "/home/travis/build/crytic/slither/tests/incorrect_erc20_interface.sol", "filename_used": "/home/travis/build/crytic/slither/tests/incorrect_erc20_interface.sol",
"filename_relative": "tests/incorrect_erc20_interface.sol", "filename_relative": "tests/incorrect_erc20_interface.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/incorrect_erc20_interface.sol", "filename_absolute": "/home/travis/build/crytic/slither/tests/incorrect_erc20_interface.sol",
"filename_short": "tests/incorrect_erc20_interface.sol", "filename_short": "tests/incorrect_erc20_interface.sol",
"lines": [ "lines": [
3, 6
4,
5,
6,
7,
8,
9,
10
], ],
"starting_column": 1, "starting_column": 5,
"ending_column": 2 "ending_column": 74
},
"contract": {
"type": "contract",
"name": "Token",
"source_mapping": {
"start": 26,
"length": 355,
"filename_used": "/home/travis/build/crytic/slither/tests/incorrect_erc20_interface.sol",
"filename_relative": "tests/incorrect_erc20_interface.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/incorrect_erc20_interface.sol",
"filename_short": "tests/incorrect_erc20_interface.sol",
"lines": [
3,
4,
5,
6,
7,
8,
9,
10
],
"starting_column": 1,
"ending_column": 2
}
} }
} }
} ]
] }
} ]
] }

@ -1,442 +1,446 @@
[ {
{ "success": true,
"check": "erc721-interface", "error": null,
"impact": "Medium", "results": [
"confidence": "High", {
"description": "Token (tests/incorrect_erc721_interface.sol#6-16) has incorrect ERC721 function interface(s):\n\t-supportsInterface (tests/incorrect_erc721_interface.sol#4)\n\t-balanceOf (tests/incorrect_erc721_interface.sol#7)\n\t-ownerOf (tests/incorrect_erc721_interface.sol#8)\n\t-safeTransferFrom (tests/incorrect_erc721_interface.sol#9)\n\t-safeTransferFrom (tests/incorrect_erc721_interface.sol#10)\n\t-transferFrom (tests/incorrect_erc721_interface.sol#11)\n\t-approve (tests/incorrect_erc721_interface.sol#12)\n\t-setApprovalForAll (tests/incorrect_erc721_interface.sol#13)\n\t-getApproved (tests/incorrect_erc721_interface.sol#14)\n\t-isApprovedForAll (tests/incorrect_erc721_interface.sol#15)\n", "check": "erc721-interface",
"elements": [ "impact": "Medium",
{ "confidence": "High",
"type": "function", "description": "Token (tests/incorrect_erc721_interface.sol#6-16) has incorrect ERC721 function interface(s):\n\t-supportsInterface (tests/incorrect_erc721_interface.sol#4)\n\t-balanceOf (tests/incorrect_erc721_interface.sol#7)\n\t-ownerOf (tests/incorrect_erc721_interface.sol#8)\n\t-safeTransferFrom (tests/incorrect_erc721_interface.sol#9)\n\t-safeTransferFrom (tests/incorrect_erc721_interface.sol#10)\n\t-transferFrom (tests/incorrect_erc721_interface.sol#11)\n\t-approve (tests/incorrect_erc721_interface.sol#12)\n\t-setApprovalForAll (tests/incorrect_erc721_interface.sol#13)\n\t-getApproved (tests/incorrect_erc721_interface.sol#14)\n\t-isApprovedForAll (tests/incorrect_erc721_interface.sol#15)\n",
"name": "approve", "elements": [
"source_mapping": { {
"start": 549, "type": "function",
"length": 78, "name": "approve",
"filename_used": "/home/travis/build/crytic/slither/tests/incorrect_erc721_interface.sol",
"filename_relative": "tests/incorrect_erc721_interface.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/incorrect_erc721_interface.sol",
"filename_short": "tests/incorrect_erc721_interface.sol",
"lines": [
12
],
"starting_column": 5,
"ending_column": 83
},
"contract": {
"type": "contract",
"name": "Token",
"source_mapping": { "source_mapping": {
"start": 109, "start": 549,
"length": 739, "length": 78,
"filename_used": "/home/travis/build/crytic/slither/tests/incorrect_erc721_interface.sol", "filename_used": "/home/travis/build/crytic/slither/tests/incorrect_erc721_interface.sol",
"filename_relative": "tests/incorrect_erc721_interface.sol", "filename_relative": "tests/incorrect_erc721_interface.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/incorrect_erc721_interface.sol", "filename_absolute": "/home/travis/build/crytic/slither/tests/incorrect_erc721_interface.sol",
"filename_short": "tests/incorrect_erc721_interface.sol", "filename_short": "tests/incorrect_erc721_interface.sol",
"lines": [ "lines": [
6, 12
7,
8,
9,
10,
11,
12,
13,
14,
15,
16
], ],
"starting_column": 1, "starting_column": 5,
"ending_column": 2 "ending_column": 83
},
"contract": {
"type": "contract",
"name": "Token",
"source_mapping": {
"start": 109,
"length": 739,
"filename_used": "/home/travis/build/crytic/slither/tests/incorrect_erc721_interface.sol",
"filename_relative": "tests/incorrect_erc721_interface.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/incorrect_erc721_interface.sol",
"filename_short": "tests/incorrect_erc721_interface.sol",
"lines": [
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16
],
"starting_column": 1,
"ending_column": 2
}
} }
}
},
{
"type": "function",
"name": "balanceOf",
"source_mapping": {
"start": 140,
"length": 44,
"filename_used": "/home/travis/build/crytic/slither/tests/incorrect_erc721_interface.sol",
"filename_relative": "tests/incorrect_erc721_interface.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/incorrect_erc721_interface.sol",
"filename_short": "tests/incorrect_erc721_interface.sol",
"lines": [
7
],
"starting_column": 5,
"ending_column": 49
}, },
"contract": { {
"type": "contract", "type": "function",
"name": "Token", "name": "balanceOf",
"source_mapping": { "source_mapping": {
"start": 109, "start": 140,
"length": 739, "length": 44,
"filename_used": "/home/travis/build/crytic/slither/tests/incorrect_erc721_interface.sol", "filename_used": "/home/travis/build/crytic/slither/tests/incorrect_erc721_interface.sol",
"filename_relative": "tests/incorrect_erc721_interface.sol", "filename_relative": "tests/incorrect_erc721_interface.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/incorrect_erc721_interface.sol", "filename_absolute": "/home/travis/build/crytic/slither/tests/incorrect_erc721_interface.sol",
"filename_short": "tests/incorrect_erc721_interface.sol", "filename_short": "tests/incorrect_erc721_interface.sol",
"lines": [ "lines": [
6, 7
7,
8,
9,
10,
11,
12,
13,
14,
15,
16
], ],
"starting_column": 1, "starting_column": 5,
"ending_column": 2 "ending_column": 49
},
"contract": {
"type": "contract",
"name": "Token",
"source_mapping": {
"start": 109,
"length": 739,
"filename_used": "/home/travis/build/crytic/slither/tests/incorrect_erc721_interface.sol",
"filename_relative": "tests/incorrect_erc721_interface.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/incorrect_erc721_interface.sol",
"filename_short": "tests/incorrect_erc721_interface.sol",
"lines": [
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16
],
"starting_column": 1,
"ending_column": 2
}
} }
}
},
{
"type": "function",
"name": "getApproved",
"source_mapping": {
"start": 723,
"length": 48,
"filename_used": "/home/travis/build/crytic/slither/tests/incorrect_erc721_interface.sol",
"filename_relative": "tests/incorrect_erc721_interface.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/incorrect_erc721_interface.sol",
"filename_short": "tests/incorrect_erc721_interface.sol",
"lines": [
14
],
"starting_column": 5,
"ending_column": 53
}, },
"contract": { {
"type": "contract", "type": "function",
"name": "Token", "name": "getApproved",
"source_mapping": { "source_mapping": {
"start": 109, "start": 723,
"length": 739, "length": 48,
"filename_used": "/home/travis/build/crytic/slither/tests/incorrect_erc721_interface.sol", "filename_used": "/home/travis/build/crytic/slither/tests/incorrect_erc721_interface.sol",
"filename_relative": "tests/incorrect_erc721_interface.sol", "filename_relative": "tests/incorrect_erc721_interface.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/incorrect_erc721_interface.sol", "filename_absolute": "/home/travis/build/crytic/slither/tests/incorrect_erc721_interface.sol",
"filename_short": "tests/incorrect_erc721_interface.sol", "filename_short": "tests/incorrect_erc721_interface.sol",
"lines": [ "lines": [
6, 14
7,
8,
9,
10,
11,
12,
13,
14,
15,
16
], ],
"starting_column": 1, "starting_column": 5,
"ending_column": 2 "ending_column": 53
},
"contract": {
"type": "contract",
"name": "Token",
"source_mapping": {
"start": 109,
"length": 739,
"filename_used": "/home/travis/build/crytic/slither/tests/incorrect_erc721_interface.sol",
"filename_relative": "tests/incorrect_erc721_interface.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/incorrect_erc721_interface.sol",
"filename_short": "tests/incorrect_erc721_interface.sol",
"lines": [
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16
],
"starting_column": 1,
"ending_column": 2
}
} }
}
},
{
"type": "function",
"name": "isApprovedForAll",
"source_mapping": {
"start": 776,
"length": 70,
"filename_used": "/home/travis/build/crytic/slither/tests/incorrect_erc721_interface.sol",
"filename_relative": "tests/incorrect_erc721_interface.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/incorrect_erc721_interface.sol",
"filename_short": "tests/incorrect_erc721_interface.sol",
"lines": [
15
],
"starting_column": 5,
"ending_column": 75
}, },
"contract": { {
"type": "contract", "type": "function",
"name": "Token", "name": "isApprovedForAll",
"source_mapping": { "source_mapping": {
"start": 109, "start": 776,
"length": 739, "length": 70,
"filename_used": "/home/travis/build/crytic/slither/tests/incorrect_erc721_interface.sol", "filename_used": "/home/travis/build/crytic/slither/tests/incorrect_erc721_interface.sol",
"filename_relative": "tests/incorrect_erc721_interface.sol", "filename_relative": "tests/incorrect_erc721_interface.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/incorrect_erc721_interface.sol", "filename_absolute": "/home/travis/build/crytic/slither/tests/incorrect_erc721_interface.sol",
"filename_short": "tests/incorrect_erc721_interface.sol", "filename_short": "tests/incorrect_erc721_interface.sol",
"lines": [ "lines": [
6, 15
7,
8,
9,
10,
11,
12,
13,
14,
15,
16
], ],
"starting_column": 1, "starting_column": 5,
"ending_column": 2 "ending_column": 75
},
"contract": {
"type": "contract",
"name": "Token",
"source_mapping": {
"start": 109,
"length": 739,
"filename_used": "/home/travis/build/crytic/slither/tests/incorrect_erc721_interface.sol",
"filename_relative": "tests/incorrect_erc721_interface.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/incorrect_erc721_interface.sol",
"filename_short": "tests/incorrect_erc721_interface.sol",
"lines": [
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16
],
"starting_column": 1,
"ending_column": 2
}
} }
}
},
{
"type": "function",
"name": "ownerOf",
"source_mapping": {
"start": 189,
"length": 44,
"filename_used": "/home/travis/build/crytic/slither/tests/incorrect_erc721_interface.sol",
"filename_relative": "tests/incorrect_erc721_interface.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/incorrect_erc721_interface.sol",
"filename_short": "tests/incorrect_erc721_interface.sol",
"lines": [
8
],
"starting_column": 5,
"ending_column": 49
}, },
"contract": { {
"type": "contract", "type": "function",
"name": "Token", "name": "ownerOf",
"source_mapping": { "source_mapping": {
"start": 109, "start": 189,
"length": 739, "length": 44,
"filename_used": "/home/travis/build/crytic/slither/tests/incorrect_erc721_interface.sol", "filename_used": "/home/travis/build/crytic/slither/tests/incorrect_erc721_interface.sol",
"filename_relative": "tests/incorrect_erc721_interface.sol", "filename_relative": "tests/incorrect_erc721_interface.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/incorrect_erc721_interface.sol", "filename_absolute": "/home/travis/build/crytic/slither/tests/incorrect_erc721_interface.sol",
"filename_short": "tests/incorrect_erc721_interface.sol", "filename_short": "tests/incorrect_erc721_interface.sol",
"lines": [ "lines": [
6, 8
7,
8,
9,
10,
11,
12,
13,
14,
15,
16
], ],
"starting_column": 1, "starting_column": 5,
"ending_column": 2 "ending_column": 49
},
"contract": {
"type": "contract",
"name": "Token",
"source_mapping": {
"start": 109,
"length": 739,
"filename_used": "/home/travis/build/crytic/slither/tests/incorrect_erc721_interface.sol",
"filename_relative": "tests/incorrect_erc721_interface.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/incorrect_erc721_interface.sol",
"filename_short": "tests/incorrect_erc721_interface.sol",
"lines": [
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16
],
"starting_column": 1,
"ending_column": 2
}
} }
}
},
{
"type": "function",
"name": "safeTransferFrom",
"source_mapping": {
"start": 238,
"length": 108,
"filename_used": "/home/travis/build/crytic/slither/tests/incorrect_erc721_interface.sol",
"filename_relative": "tests/incorrect_erc721_interface.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/incorrect_erc721_interface.sol",
"filename_short": "tests/incorrect_erc721_interface.sol",
"lines": [
9
],
"starting_column": 5,
"ending_column": 113
}, },
"contract": { {
"type": "contract", "type": "function",
"name": "Token", "name": "safeTransferFrom",
"source_mapping": { "source_mapping": {
"start": 109, "start": 238,
"length": 739, "length": 108,
"filename_used": "/home/travis/build/crytic/slither/tests/incorrect_erc721_interface.sol", "filename_used": "/home/travis/build/crytic/slither/tests/incorrect_erc721_interface.sol",
"filename_relative": "tests/incorrect_erc721_interface.sol", "filename_relative": "tests/incorrect_erc721_interface.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/incorrect_erc721_interface.sol", "filename_absolute": "/home/travis/build/crytic/slither/tests/incorrect_erc721_interface.sol",
"filename_short": "tests/incorrect_erc721_interface.sol", "filename_short": "tests/incorrect_erc721_interface.sol",
"lines": [ "lines": [
6, 9
7,
8,
9,
10,
11,
12,
13,
14,
15,
16
], ],
"starting_column": 1, "starting_column": 5,
"ending_column": 2 "ending_column": 113
},
"contract": {
"type": "contract",
"name": "Token",
"source_mapping": {
"start": 109,
"length": 739,
"filename_used": "/home/travis/build/crytic/slither/tests/incorrect_erc721_interface.sol",
"filename_relative": "tests/incorrect_erc721_interface.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/incorrect_erc721_interface.sol",
"filename_short": "tests/incorrect_erc721_interface.sol",
"lines": [
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16
],
"starting_column": 1,
"ending_column": 2
}
} }
}
},
{
"type": "function",
"name": "safeTransferFrom",
"source_mapping": {
"start": 351,
"length": 96,
"filename_used": "/home/travis/build/crytic/slither/tests/incorrect_erc721_interface.sol",
"filename_relative": "tests/incorrect_erc721_interface.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/incorrect_erc721_interface.sol",
"filename_short": "tests/incorrect_erc721_interface.sol",
"lines": [
10
],
"starting_column": 5,
"ending_column": 101
}, },
"contract": { {
"type": "contract", "type": "function",
"name": "Token", "name": "safeTransferFrom",
"source_mapping": { "source_mapping": {
"start": 109, "start": 351,
"length": 739, "length": 96,
"filename_used": "/home/travis/build/crytic/slither/tests/incorrect_erc721_interface.sol", "filename_used": "/home/travis/build/crytic/slither/tests/incorrect_erc721_interface.sol",
"filename_relative": "tests/incorrect_erc721_interface.sol", "filename_relative": "tests/incorrect_erc721_interface.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/incorrect_erc721_interface.sol", "filename_absolute": "/home/travis/build/crytic/slither/tests/incorrect_erc721_interface.sol",
"filename_short": "tests/incorrect_erc721_interface.sol", "filename_short": "tests/incorrect_erc721_interface.sol",
"lines": [ "lines": [
6, 10
7,
8,
9,
10,
11,
12,
13,
14,
15,
16
], ],
"starting_column": 1, "starting_column": 5,
"ending_column": 2 "ending_column": 101
},
"contract": {
"type": "contract",
"name": "Token",
"source_mapping": {
"start": 109,
"length": 739,
"filename_used": "/home/travis/build/crytic/slither/tests/incorrect_erc721_interface.sol",
"filename_relative": "tests/incorrect_erc721_interface.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/incorrect_erc721_interface.sol",
"filename_short": "tests/incorrect_erc721_interface.sol",
"lines": [
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16
],
"starting_column": 1,
"ending_column": 2
}
} }
}
},
{
"type": "function",
"name": "setApprovalForAll",
"source_mapping": {
"start": 632,
"length": 86,
"filename_used": "/home/travis/build/crytic/slither/tests/incorrect_erc721_interface.sol",
"filename_relative": "tests/incorrect_erc721_interface.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/incorrect_erc721_interface.sol",
"filename_short": "tests/incorrect_erc721_interface.sol",
"lines": [
13
],
"starting_column": 5,
"ending_column": 91
}, },
"contract": { {
"type": "contract", "type": "function",
"name": "Token", "name": "setApprovalForAll",
"source_mapping": { "source_mapping": {
"start": 109, "start": 632,
"length": 739, "length": 86,
"filename_used": "/home/travis/build/crytic/slither/tests/incorrect_erc721_interface.sol", "filename_used": "/home/travis/build/crytic/slither/tests/incorrect_erc721_interface.sol",
"filename_relative": "tests/incorrect_erc721_interface.sol", "filename_relative": "tests/incorrect_erc721_interface.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/incorrect_erc721_interface.sol", "filename_absolute": "/home/travis/build/crytic/slither/tests/incorrect_erc721_interface.sol",
"filename_short": "tests/incorrect_erc721_interface.sol", "filename_short": "tests/incorrect_erc721_interface.sol",
"lines": [ "lines": [
6, 13
7,
8,
9,
10,
11,
12,
13,
14,
15,
16
], ],
"starting_column": 1, "starting_column": 5,
"ending_column": 2 "ending_column": 91
},
"contract": {
"type": "contract",
"name": "Token",
"source_mapping": {
"start": 109,
"length": 739,
"filename_used": "/home/travis/build/crytic/slither/tests/incorrect_erc721_interface.sol",
"filename_relative": "tests/incorrect_erc721_interface.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/incorrect_erc721_interface.sol",
"filename_short": "tests/incorrect_erc721_interface.sol",
"lines": [
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16
],
"starting_column": 1,
"ending_column": 2
}
} }
}
},
{
"type": "function",
"name": "supportsInterface",
"source_mapping": {
"start": 50,
"length": 56,
"filename_used": "/home/travis/build/crytic/slither/tests/incorrect_erc721_interface.sol",
"filename_relative": "tests/incorrect_erc721_interface.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/incorrect_erc721_interface.sol",
"filename_short": "tests/incorrect_erc721_interface.sol",
"lines": [
4
],
"starting_column": 5,
"ending_column": 61
}, },
"contract": { {
"type": "contract", "type": "function",
"name": "IERC165", "name": "supportsInterface",
"source_mapping": { "source_mapping": {
"start": 26, "start": 50,
"length": 82, "length": 56,
"filename_used": "/home/travis/build/crytic/slither/tests/incorrect_erc721_interface.sol", "filename_used": "/home/travis/build/crytic/slither/tests/incorrect_erc721_interface.sol",
"filename_relative": "tests/incorrect_erc721_interface.sol", "filename_relative": "tests/incorrect_erc721_interface.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/incorrect_erc721_interface.sol", "filename_absolute": "/home/travis/build/crytic/slither/tests/incorrect_erc721_interface.sol",
"filename_short": "tests/incorrect_erc721_interface.sol", "filename_short": "tests/incorrect_erc721_interface.sol",
"lines": [ "lines": [
3, 4
4,
5
], ],
"starting_column": 1, "starting_column": 5,
"ending_column": 2 "ending_column": 61
},
"contract": {
"type": "contract",
"name": "IERC165",
"source_mapping": {
"start": 26,
"length": 82,
"filename_used": "/home/travis/build/crytic/slither/tests/incorrect_erc721_interface.sol",
"filename_relative": "tests/incorrect_erc721_interface.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/incorrect_erc721_interface.sol",
"filename_short": "tests/incorrect_erc721_interface.sol",
"lines": [
3,
4,
5
],
"starting_column": 1,
"ending_column": 2
}
} }
}
},
{
"type": "function",
"name": "transferFrom",
"source_mapping": {
"start": 452,
"length": 92,
"filename_used": "/home/travis/build/crytic/slither/tests/incorrect_erc721_interface.sol",
"filename_relative": "tests/incorrect_erc721_interface.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/incorrect_erc721_interface.sol",
"filename_short": "tests/incorrect_erc721_interface.sol",
"lines": [
11
],
"starting_column": 5,
"ending_column": 97
}, },
"contract": { {
"type": "contract", "type": "function",
"name": "Token", "name": "transferFrom",
"source_mapping": { "source_mapping": {
"start": 109, "start": 452,
"length": 739, "length": 92,
"filename_used": "/home/travis/build/crytic/slither/tests/incorrect_erc721_interface.sol", "filename_used": "/home/travis/build/crytic/slither/tests/incorrect_erc721_interface.sol",
"filename_relative": "tests/incorrect_erc721_interface.sol", "filename_relative": "tests/incorrect_erc721_interface.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/incorrect_erc721_interface.sol", "filename_absolute": "/home/travis/build/crytic/slither/tests/incorrect_erc721_interface.sol",
"filename_short": "tests/incorrect_erc721_interface.sol", "filename_short": "tests/incorrect_erc721_interface.sol",
"lines": [ "lines": [
6, 11
7,
8,
9,
10,
11,
12,
13,
14,
15,
16
], ],
"starting_column": 1, "starting_column": 5,
"ending_column": 2 "ending_column": 97
},
"contract": {
"type": "contract",
"name": "Token",
"source_mapping": {
"start": 109,
"length": 739,
"filename_used": "/home/travis/build/crytic/slither/tests/incorrect_erc721_interface.sol",
"filename_relative": "tests/incorrect_erc721_interface.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/incorrect_erc721_interface.sol",
"filename_short": "tests/incorrect_erc721_interface.sol",
"lines": [
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16
],
"starting_column": 1,
"ending_column": 2
}
} }
} }
} ]
] }
} ]
] }

@ -1,52 +1,24 @@
[ {
{ "success": true,
"check": "assembly", "error": null,
"impact": "Informational", "results": [
"confidence": "High", {
"description": "GetCode.at uses assembly (tests/inline_assembly_contract-0.5.1.sol#6-20)\n\t- tests/inline_assembly_contract-0.5.1.sol#7-20\n", "check": "assembly",
"elements": [ "impact": "Informational",
{ "confidence": "High",
"type": "function", "description": "GetCode.at uses assembly (tests/inline_assembly_contract-0.5.1.sol#6-20)\n\t- tests/inline_assembly_contract-0.5.1.sol#7-20\n",
"name": "at", "elements": [
"source_mapping": { {
"start": 119, "type": "function",
"length": 707, "name": "at",
"filename_used": "/home/travis/build/crytic/slither/tests/inline_assembly_contract-0.5.1.sol",
"filename_relative": "tests/inline_assembly_contract-0.5.1.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/inline_assembly_contract-0.5.1.sol",
"filename_short": "tests/inline_assembly_contract-0.5.1.sol",
"lines": [
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20
],
"starting_column": 5,
"ending_column": 6
},
"contract": {
"type": "contract",
"name": "GetCode",
"source_mapping": { "source_mapping": {
"start": 97, "start": 119,
"length": 731, "length": 707,
"filename_used": "/home/travis/build/crytic/slither/tests/inline_assembly_contract-0.5.1.sol", "filename_used": "/home/travis/build/crytic/slither/tests/inline_assembly_contract-0.5.1.sol",
"filename_relative": "tests/inline_assembly_contract-0.5.1.sol", "filename_relative": "tests/inline_assembly_contract-0.5.1.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/inline_assembly_contract-0.5.1.sol", "filename_absolute": "/home/travis/build/crytic/slither/tests/inline_assembly_contract-0.5.1.sol",
"filename_short": "tests/inline_assembly_contract-0.5.1.sol", "filename_short": "tests/inline_assembly_contract-0.5.1.sol",
"lines": [ "lines": [
5,
6, 6,
7, 7,
8, 8,
@ -61,44 +33,76 @@
17, 17,
18, 18,
19, 19,
20, 20
21
], ],
"starting_column": 1, "starting_column": 5,
"ending_column": 2 "ending_column": 6
},
"contract": {
"type": "contract",
"name": "GetCode",
"source_mapping": {
"start": 97,
"length": 731,
"filename_used": "/home/travis/build/crytic/slither/tests/inline_assembly_contract-0.5.1.sol",
"filename_relative": "tests/inline_assembly_contract-0.5.1.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/inline_assembly_contract-0.5.1.sol",
"filename_short": "tests/inline_assembly_contract-0.5.1.sol",
"lines": [
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20,
21
],
"starting_column": 1,
"ending_column": 2
}
}
},
{
"type": "expression",
"expression": "None",
"source_mapping": {
"start": 198,
"length": 628,
"filename_used": "/home/travis/build/crytic/slither/tests/inline_assembly_contract-0.5.1.sol",
"filename_relative": "tests/inline_assembly_contract-0.5.1.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/inline_assembly_contract-0.5.1.sol",
"filename_short": "tests/inline_assembly_contract-0.5.1.sol",
"lines": [
7,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20
],
"starting_column": 9,
"ending_column": 6
} }
} }
}, ]
{ }
"type": "expression", ]
"expression": "None", }
"source_mapping": {
"start": 198,
"length": 628,
"filename_used": "/home/travis/build/crytic/slither/tests/inline_assembly_contract-0.5.1.sol",
"filename_relative": "tests/inline_assembly_contract-0.5.1.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/inline_assembly_contract-0.5.1.sol",
"filename_short": "tests/inline_assembly_contract-0.5.1.sol",
"lines": [
7,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20
],
"starting_column": 9,
"ending_column": 6
}
}
]
}
]

@ -1,52 +1,24 @@
[ {
{ "success": true,
"check": "assembly", "error": null,
"impact": "Informational", "results": [
"confidence": "High", {
"description": "GetCode.at uses assembly (tests/inline_assembly_contract.sol#6-20)\n\t- tests/inline_assembly_contract.sol#7-20\n", "check": "assembly",
"elements": [ "impact": "Informational",
{ "confidence": "High",
"type": "function", "description": "GetCode.at uses assembly (tests/inline_assembly_contract.sol#6-20)\n\t- tests/inline_assembly_contract.sol#7-20\n",
"name": "at", "elements": [
"source_mapping": { {
"start": 119, "type": "function",
"length": 700, "name": "at",
"filename_used": "/home/travis/build/crytic/slither/tests/inline_assembly_contract.sol",
"filename_relative": "tests/inline_assembly_contract.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/inline_assembly_contract.sol",
"filename_short": "tests/inline_assembly_contract.sol",
"lines": [
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20
],
"starting_column": 5,
"ending_column": 6
},
"contract": {
"type": "contract",
"name": "GetCode",
"source_mapping": { "source_mapping": {
"start": 97, "start": 119,
"length": 724, "length": 700,
"filename_used": "/home/travis/build/crytic/slither/tests/inline_assembly_contract.sol", "filename_used": "/home/travis/build/crytic/slither/tests/inline_assembly_contract.sol",
"filename_relative": "tests/inline_assembly_contract.sol", "filename_relative": "tests/inline_assembly_contract.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/inline_assembly_contract.sol", "filename_absolute": "/home/travis/build/crytic/slither/tests/inline_assembly_contract.sol",
"filename_short": "tests/inline_assembly_contract.sol", "filename_short": "tests/inline_assembly_contract.sol",
"lines": [ "lines": [
5,
6, 6,
7, 7,
8, 8,
@ -61,44 +33,76 @@
17, 17,
18, 18,
19, 19,
20, 20
21
], ],
"starting_column": 1, "starting_column": 5,
"ending_column": 2 "ending_column": 6
},
"contract": {
"type": "contract",
"name": "GetCode",
"source_mapping": {
"start": 97,
"length": 724,
"filename_used": "/home/travis/build/crytic/slither/tests/inline_assembly_contract.sol",
"filename_relative": "tests/inline_assembly_contract.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/inline_assembly_contract.sol",
"filename_short": "tests/inline_assembly_contract.sol",
"lines": [
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20,
21
],
"starting_column": 1,
"ending_column": 2
}
}
},
{
"type": "expression",
"expression": "None",
"source_mapping": {
"start": 191,
"length": 628,
"filename_used": "/home/travis/build/crytic/slither/tests/inline_assembly_contract.sol",
"filename_relative": "tests/inline_assembly_contract.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/inline_assembly_contract.sol",
"filename_short": "tests/inline_assembly_contract.sol",
"lines": [
7,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20
],
"starting_column": 9,
"ending_column": 6
} }
} }
}, ]
{ }
"type": "expression", ]
"expression": "None", }
"source_mapping": {
"start": 191,
"length": 628,
"filename_used": "/home/travis/build/crytic/slither/tests/inline_assembly_contract.sol",
"filename_relative": "tests/inline_assembly_contract.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/inline_assembly_contract.sol",
"filename_short": "tests/inline_assembly_contract.sol",
"lines": [
7,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20
],
"starting_column": 9,
"ending_column": 6
}
}
]
}
]

@ -1,63 +1,135 @@
[ {
{ "success": true,
"check": "assembly", "error": null,
"impact": "Informational", "results": [
"confidence": "High", {
"description": "VectorSum.sumAsm uses assembly (tests/inline_assembly_library-0.5.1.sol#16-22)\n\t- tests/inline_assembly_library-0.5.1.sol#18-21\n", "check": "assembly",
"elements": [ "impact": "Informational",
{ "confidence": "High",
"type": "function", "description": "VectorSum.sumAsm uses assembly (tests/inline_assembly_library-0.5.1.sol#16-22)\n\t- tests/inline_assembly_library-0.5.1.sol#18-21\n",
"name": "sumAsm", "elements": [
"source_mapping": { {
"start": 599, "type": "function",
"length": 254, "name": "sumAsm",
"filename_used": "/home/travis/build/crytic/slither/tests/inline_assembly_library-0.5.1.sol",
"filename_relative": "tests/inline_assembly_library-0.5.1.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/inline_assembly_library-0.5.1.sol",
"filename_short": "tests/inline_assembly_library-0.5.1.sol",
"lines": [
16,
17,
18,
19,
20,
21,
22
],
"starting_column": 5,
"ending_column": 6
},
"contract": {
"type": "contract",
"name": "VectorSum",
"source_mapping": { "source_mapping": {
"start": 97, "start": 599,
"length": 1602, "length": 254,
"filename_used": "/home/travis/build/crytic/slither/tests/inline_assembly_library-0.5.1.sol", "filename_used": "/home/travis/build/crytic/slither/tests/inline_assembly_library-0.5.1.sol",
"filename_relative": "tests/inline_assembly_library-0.5.1.sol", "filename_relative": "tests/inline_assembly_library-0.5.1.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/inline_assembly_library-0.5.1.sol", "filename_absolute": "/home/travis/build/crytic/slither/tests/inline_assembly_library-0.5.1.sol",
"filename_short": "tests/inline_assembly_library-0.5.1.sol", "filename_short": "tests/inline_assembly_library-0.5.1.sol",
"lines": [ "lines": [
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16, 16,
17, 17,
18, 18,
19, 19,
20, 20,
21, 21,
22, 22
23, ],
24, "starting_column": 5,
"ending_column": 6
},
"contract": {
"type": "contract",
"name": "VectorSum",
"source_mapping": {
"start": 97,
"length": 1602,
"filename_used": "/home/travis/build/crytic/slither/tests/inline_assembly_library-0.5.1.sol",
"filename_relative": "tests/inline_assembly_library-0.5.1.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/inline_assembly_library-0.5.1.sol",
"filename_short": "tests/inline_assembly_library-0.5.1.sol",
"lines": [
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
],
"starting_column": 1,
"ending_column": 2
}
}
},
{
"type": "expression",
"expression": "None",
"source_mapping": {
"start": 733,
"length": 114,
"filename_used": "/home/travis/build/crytic/slither/tests/inline_assembly_library-0.5.1.sol",
"filename_relative": "tests/inline_assembly_library-0.5.1.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/inline_assembly_library-0.5.1.sol",
"filename_short": "tests/inline_assembly_library-0.5.1.sol",
"lines": [
18,
19,
20,
21
],
"starting_column": 13,
"ending_column": 10
}
}
]
},
{
"check": "assembly",
"impact": "Informational",
"confidence": "High",
"description": "VectorSum.sumPureAsm uses assembly (tests/inline_assembly_library-0.5.1.sol#25-47)\n\t- tests/inline_assembly_library-0.5.1.sol#26-47\n",
"elements": [
{
"type": "function",
"name": "sumPureAsm",
"source_mapping": {
"start": 936,
"length": 761,
"filename_used": "/home/travis/build/crytic/slither/tests/inline_assembly_library-0.5.1.sol",
"filename_relative": "tests/inline_assembly_library-0.5.1.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/inline_assembly_library-0.5.1.sol",
"filename_short": "tests/inline_assembly_library-0.5.1.sol",
"lines": [
25, 25,
26, 26,
27, 27,
@ -80,112 +152,83 @@
44, 44,
45, 45,
46, 46,
47, 47
48
], ],
"starting_column": 1, "starting_column": 5,
"ending_column": 2 "ending_column": 6
},
"contract": {
"type": "contract",
"name": "VectorSum",
"source_mapping": {
"start": 97,
"length": 1602,
"filename_used": "/home/travis/build/crytic/slither/tests/inline_assembly_library-0.5.1.sol",
"filename_relative": "tests/inline_assembly_library-0.5.1.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/inline_assembly_library-0.5.1.sol",
"filename_short": "tests/inline_assembly_library-0.5.1.sol",
"lines": [
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
],
"starting_column": 1,
"ending_column": 2
}
} }
}
},
{
"type": "expression",
"expression": "None",
"source_mapping": {
"start": 733,
"length": 114,
"filename_used": "/home/travis/build/crytic/slither/tests/inline_assembly_library-0.5.1.sol",
"filename_relative": "tests/inline_assembly_library-0.5.1.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/inline_assembly_library-0.5.1.sol",
"filename_short": "tests/inline_assembly_library-0.5.1.sol",
"lines": [
18,
19,
20,
21
],
"starting_column": 13,
"ending_column": 10
}
}
]
},
{
"check": "assembly",
"impact": "Informational",
"confidence": "High",
"description": "VectorSum.sumPureAsm uses assembly (tests/inline_assembly_library-0.5.1.sol#25-47)\n\t- tests/inline_assembly_library-0.5.1.sol#26-47\n",
"elements": [
{
"type": "function",
"name": "sumPureAsm",
"source_mapping": {
"start": 936,
"length": 761,
"filename_used": "/home/travis/build/crytic/slither/tests/inline_assembly_library-0.5.1.sol",
"filename_relative": "tests/inline_assembly_library-0.5.1.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/inline_assembly_library-0.5.1.sol",
"filename_short": "tests/inline_assembly_library-0.5.1.sol",
"lines": [
25,
26,
27,
28,
29,
30,
31,
32,
33,
34,
35,
36,
37,
38,
39,
40,
41,
42,
43,
44,
45,
46,
47
],
"starting_column": 5,
"ending_column": 6
}, },
"contract": { {
"type": "contract", "type": "expression",
"name": "VectorSum", "expression": "None",
"source_mapping": { "source_mapping": {
"start": 97, "start": 1020,
"length": 1602, "length": 677,
"filename_used": "/home/travis/build/crytic/slither/tests/inline_assembly_library-0.5.1.sol", "filename_used": "/home/travis/build/crytic/slither/tests/inline_assembly_library-0.5.1.sol",
"filename_relative": "tests/inline_assembly_library-0.5.1.sol", "filename_relative": "tests/inline_assembly_library-0.5.1.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/inline_assembly_library-0.5.1.sol", "filename_absolute": "/home/travis/build/crytic/slither/tests/inline_assembly_library-0.5.1.sol",
"filename_short": "tests/inline_assembly_library-0.5.1.sol", "filename_short": "tests/inline_assembly_library-0.5.1.sol",
"lines": [ "lines": [
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20,
21,
22,
23,
24,
25,
26, 26,
27, 27,
28, 28,
@ -207,52 +250,13 @@
44, 44,
45, 45,
46, 46,
47, 47
48
], ],
"starting_column": 1, "starting_column": 9,
"ending_column": 2 "ending_column": 6
} }
} }
}, ]
{ }
"type": "expression", ]
"expression": "None", }
"source_mapping": {
"start": 1020,
"length": 677,
"filename_used": "/home/travis/build/crytic/slither/tests/inline_assembly_library-0.5.1.sol",
"filename_relative": "tests/inline_assembly_library-0.5.1.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/inline_assembly_library-0.5.1.sol",
"filename_short": "tests/inline_assembly_library-0.5.1.sol",
"lines": [
26,
27,
28,
29,
30,
31,
32,
33,
34,
35,
36,
37,
38,
39,
40,
41,
42,
43,
44,
45,
46,
47
],
"starting_column": 9,
"ending_column": 6
}
}
]
}
]

@ -1,63 +1,135 @@
[ {
{ "success": true,
"check": "assembly", "error": null,
"impact": "Informational", "results": [
"confidence": "High", {
"description": "VectorSum.sumAsm uses assembly (tests/inline_assembly_library.sol#16-22)\n\t- tests/inline_assembly_library.sol#18-21\n", "check": "assembly",
"elements": [ "impact": "Informational",
{ "confidence": "High",
"type": "function", "description": "VectorSum.sumAsm uses assembly (tests/inline_assembly_library.sol#16-22)\n\t- tests/inline_assembly_library.sol#18-21\n",
"name": "sumAsm", "elements": [
"source_mapping": { {
"start": 593, "type": "function",
"length": 247, "name": "sumAsm",
"filename_used": "/home/travis/build/crytic/slither/tests/inline_assembly_library.sol",
"filename_relative": "tests/inline_assembly_library.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/inline_assembly_library.sol",
"filename_short": "tests/inline_assembly_library.sol",
"lines": [
16,
17,
18,
19,
20,
21,
22
],
"starting_column": 5,
"ending_column": 6
},
"contract": {
"type": "contract",
"name": "VectorSum",
"source_mapping": { "source_mapping": {
"start": 98, "start": 593,
"length": 1581, "length": 247,
"filename_used": "/home/travis/build/crytic/slither/tests/inline_assembly_library.sol", "filename_used": "/home/travis/build/crytic/slither/tests/inline_assembly_library.sol",
"filename_relative": "tests/inline_assembly_library.sol", "filename_relative": "tests/inline_assembly_library.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/inline_assembly_library.sol", "filename_absolute": "/home/travis/build/crytic/slither/tests/inline_assembly_library.sol",
"filename_short": "tests/inline_assembly_library.sol", "filename_short": "tests/inline_assembly_library.sol",
"lines": [ "lines": [
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16, 16,
17, 17,
18, 18,
19, 19,
20, 20,
21, 21,
22, 22
23, ],
24, "starting_column": 5,
"ending_column": 6
},
"contract": {
"type": "contract",
"name": "VectorSum",
"source_mapping": {
"start": 98,
"length": 1581,
"filename_used": "/home/travis/build/crytic/slither/tests/inline_assembly_library.sol",
"filename_relative": "tests/inline_assembly_library.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/inline_assembly_library.sol",
"filename_short": "tests/inline_assembly_library.sol",
"lines": [
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
],
"starting_column": 1,
"ending_column": 2
}
}
},
{
"type": "expression",
"expression": "None",
"source_mapping": {
"start": 720,
"length": 114,
"filename_used": "/home/travis/build/crytic/slither/tests/inline_assembly_library.sol",
"filename_relative": "tests/inline_assembly_library.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/inline_assembly_library.sol",
"filename_short": "tests/inline_assembly_library.sol",
"lines": [
18,
19,
20,
21
],
"starting_column": 13,
"ending_column": 10
}
}
]
},
{
"check": "assembly",
"impact": "Informational",
"confidence": "High",
"description": "VectorSum.sumPureAsm uses assembly (tests/inline_assembly_library.sol#25-47)\n\t- tests/inline_assembly_library.sol#26-47\n",
"elements": [
{
"type": "function",
"name": "sumPureAsm",
"source_mapping": {
"start": 923,
"length": 754,
"filename_used": "/home/travis/build/crytic/slither/tests/inline_assembly_library.sol",
"filename_relative": "tests/inline_assembly_library.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/inline_assembly_library.sol",
"filename_short": "tests/inline_assembly_library.sol",
"lines": [
25, 25,
26, 26,
27, 27,
@ -80,112 +152,83 @@
44, 44,
45, 45,
46, 46,
47, 47
48
], ],
"starting_column": 1, "starting_column": 5,
"ending_column": 2 "ending_column": 6
},
"contract": {
"type": "contract",
"name": "VectorSum",
"source_mapping": {
"start": 98,
"length": 1581,
"filename_used": "/home/travis/build/crytic/slither/tests/inline_assembly_library.sol",
"filename_relative": "tests/inline_assembly_library.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/inline_assembly_library.sol",
"filename_short": "tests/inline_assembly_library.sol",
"lines": [
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
],
"starting_column": 1,
"ending_column": 2
}
} }
}
},
{
"type": "expression",
"expression": "None",
"source_mapping": {
"start": 720,
"length": 114,
"filename_used": "/home/travis/build/crytic/slither/tests/inline_assembly_library.sol",
"filename_relative": "tests/inline_assembly_library.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/inline_assembly_library.sol",
"filename_short": "tests/inline_assembly_library.sol",
"lines": [
18,
19,
20,
21
],
"starting_column": 13,
"ending_column": 10
}
}
]
},
{
"check": "assembly",
"impact": "Informational",
"confidence": "High",
"description": "VectorSum.sumPureAsm uses assembly (tests/inline_assembly_library.sol#25-47)\n\t- tests/inline_assembly_library.sol#26-47\n",
"elements": [
{
"type": "function",
"name": "sumPureAsm",
"source_mapping": {
"start": 923,
"length": 754,
"filename_used": "/home/travis/build/crytic/slither/tests/inline_assembly_library.sol",
"filename_relative": "tests/inline_assembly_library.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/inline_assembly_library.sol",
"filename_short": "tests/inline_assembly_library.sol",
"lines": [
25,
26,
27,
28,
29,
30,
31,
32,
33,
34,
35,
36,
37,
38,
39,
40,
41,
42,
43,
44,
45,
46,
47
],
"starting_column": 5,
"ending_column": 6
}, },
"contract": { {
"type": "contract", "type": "expression",
"name": "VectorSum", "expression": "None",
"source_mapping": { "source_mapping": {
"start": 98, "start": 1000,
"length": 1581, "length": 677,
"filename_used": "/home/travis/build/crytic/slither/tests/inline_assembly_library.sol", "filename_used": "/home/travis/build/crytic/slither/tests/inline_assembly_library.sol",
"filename_relative": "tests/inline_assembly_library.sol", "filename_relative": "tests/inline_assembly_library.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/inline_assembly_library.sol", "filename_absolute": "/home/travis/build/crytic/slither/tests/inline_assembly_library.sol",
"filename_short": "tests/inline_assembly_library.sol", "filename_short": "tests/inline_assembly_library.sol",
"lines": [ "lines": [
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20,
21,
22,
23,
24,
25,
26, 26,
27, 27,
28, 28,
@ -207,52 +250,13 @@
44, 44,
45, 45,
46, 46,
47, 47
48
], ],
"starting_column": 1, "starting_column": 9,
"ending_column": 2 "ending_column": 6
} }
} }
}, ]
{ }
"type": "expression", ]
"expression": "None", }
"source_mapping": {
"start": 1000,
"length": 677,
"filename_used": "/home/travis/build/crytic/slither/tests/inline_assembly_library.sol",
"filename_relative": "tests/inline_assembly_library.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/inline_assembly_library.sol",
"filename_short": "tests/inline_assembly_library.sol",
"lines": [
26,
27,
28,
29,
30,
31,
32,
33,
34,
35,
36,
37,
38,
39,
40,
41,
42,
43,
44,
45,
46,
47
],
"starting_column": 9,
"ending_column": 6
}
}
]
}
]

@ -1,69 +1,73 @@
[ {
{ "success": true,
"check": "locked-ether", "error": null,
"impact": "Medium", "results": [
"confidence": "High", {
"description": "Contract locking ether found in :\n\tContract OnlyLocked has payable functions:\n\t - receive (tests/locked_ether-0.5.1.sol#4-6)\n\tBut does not have a function to withdraw the ether\n", "check": "locked-ether",
"elements": [ "impact": "Medium",
{ "confidence": "High",
"type": "function", "description": "Contract locking ether found in :\n\tContract OnlyLocked has payable functions:\n\t - receive (tests/locked_ether-0.5.1.sol#4-6)\n\tBut does not have a function to withdraw the ether\n",
"name": "receive", "elements": [
"source_mapping": { {
"start": 46, "type": "function",
"length": 72, "name": "receive",
"filename_used": "/home/travis/build/crytic/slither/tests/locked_ether-0.5.1.sol",
"filename_relative": "tests/locked_ether-0.5.1.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/locked_ether-0.5.1.sol",
"filename_short": "tests/locked_ether-0.5.1.sol",
"lines": [
4,
5,
6
],
"starting_column": 5,
"ending_column": 6
},
"contract": {
"type": "contract",
"name": "Locked",
"source_mapping": { "source_mapping": {
"start": 24, "start": 46,
"length": 97, "length": 72,
"filename_used": "/home/travis/build/crytic/slither/tests/locked_ether-0.5.1.sol", "filename_used": "/home/travis/build/crytic/slither/tests/locked_ether-0.5.1.sol",
"filename_relative": "tests/locked_ether-0.5.1.sol", "filename_relative": "tests/locked_ether-0.5.1.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/locked_ether-0.5.1.sol", "filename_absolute": "/home/travis/build/crytic/slither/tests/locked_ether-0.5.1.sol",
"filename_short": "tests/locked_ether-0.5.1.sol", "filename_short": "tests/locked_ether-0.5.1.sol",
"lines": [ "lines": [
2,
3,
4, 4,
5, 5,
6, 6
7, ],
8 "starting_column": 5,
"ending_column": 6
},
"contract": {
"type": "contract",
"name": "Locked",
"source_mapping": {
"start": 24,
"length": 97,
"filename_used": "/home/travis/build/crytic/slither/tests/locked_ether-0.5.1.sol",
"filename_relative": "tests/locked_ether-0.5.1.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/locked_ether-0.5.1.sol",
"filename_short": "tests/locked_ether-0.5.1.sol",
"lines": [
2,
3,
4,
5,
6,
7,
8
],
"starting_column": 1,
"ending_column": 2
}
}
},
{
"type": "contract",
"name": "OnlyLocked",
"source_mapping": {
"start": 375,
"length": 32,
"filename_used": "/home/travis/build/crytic/slither/tests/locked_ether-0.5.1.sol",
"filename_relative": "tests/locked_ether-0.5.1.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/locked_ether-0.5.1.sol",
"filename_short": "tests/locked_ether-0.5.1.sol",
"lines": [
26
], ],
"starting_column": 1, "starting_column": 1,
"ending_column": 2 "ending_column": 33
} }
} }
}, ]
{ }
"type": "contract", ]
"name": "OnlyLocked", }
"source_mapping": {
"start": 375,
"length": 32,
"filename_used": "/home/travis/build/crytic/slither/tests/locked_ether-0.5.1.sol",
"filename_relative": "tests/locked_ether-0.5.1.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/locked_ether-0.5.1.sol",
"filename_short": "tests/locked_ether-0.5.1.sol",
"lines": [
26
],
"starting_column": 1,
"ending_column": 33
}
}
]
}
]

@ -1,69 +1,73 @@
[ {
{ "success": true,
"check": "locked-ether", "error": null,
"impact": "Medium", "results": [
"confidence": "High", {
"description": "Contract locking ether found in :\n\tContract OnlyLocked has payable functions:\n\t - receive (tests/locked_ether.sol#4-6)\n\tBut does not have a function to withdraw the ether\n", "check": "locked-ether",
"elements": [ "impact": "Medium",
{ "confidence": "High",
"type": "function", "description": "Contract locking ether found in :\n\tContract OnlyLocked has payable functions:\n\t - receive (tests/locked_ether.sol#4-6)\n\tBut does not have a function to withdraw the ether\n",
"name": "receive", "elements": [
"source_mapping": { {
"start": 47, "type": "function",
"length": 72, "name": "receive",
"filename_used": "/home/travis/build/crytic/slither/tests/locked_ether.sol",
"filename_relative": "tests/locked_ether.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/locked_ether.sol",
"filename_short": "tests/locked_ether.sol",
"lines": [
4,
5,
6
],
"starting_column": 5,
"ending_column": 6
},
"contract": {
"type": "contract",
"name": "Locked",
"source_mapping": { "source_mapping": {
"start": 25, "start": 47,
"length": 97, "length": 72,
"filename_used": "/home/travis/build/crytic/slither/tests/locked_ether.sol", "filename_used": "/home/travis/build/crytic/slither/tests/locked_ether.sol",
"filename_relative": "tests/locked_ether.sol", "filename_relative": "tests/locked_ether.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/locked_ether.sol", "filename_absolute": "/home/travis/build/crytic/slither/tests/locked_ether.sol",
"filename_short": "tests/locked_ether.sol", "filename_short": "tests/locked_ether.sol",
"lines": [ "lines": [
2,
3,
4, 4,
5, 5,
6, 6
7, ],
8 "starting_column": 5,
"ending_column": 6
},
"contract": {
"type": "contract",
"name": "Locked",
"source_mapping": {
"start": 25,
"length": 97,
"filename_used": "/home/travis/build/crytic/slither/tests/locked_ether.sol",
"filename_relative": "tests/locked_ether.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/locked_ether.sol",
"filename_short": "tests/locked_ether.sol",
"lines": [
2,
3,
4,
5,
6,
7,
8
],
"starting_column": 1,
"ending_column": 2
}
}
},
{
"type": "contract",
"name": "OnlyLocked",
"source_mapping": {
"start": 368,
"length": 32,
"filename_used": "/home/travis/build/crytic/slither/tests/locked_ether.sol",
"filename_relative": "tests/locked_ether.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/locked_ether.sol",
"filename_short": "tests/locked_ether.sol",
"lines": [
26
], ],
"starting_column": 1, "starting_column": 1,
"ending_column": 2 "ending_column": 33
} }
} }
}, ]
{ }
"type": "contract", ]
"name": "OnlyLocked", }
"source_mapping": {
"start": 368,
"length": 32,
"filename_used": "/home/travis/build/crytic/slither/tests/locked_ether.sol",
"filename_relative": "tests/locked_ether.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/locked_ether.sol",
"filename_short": "tests/locked_ether.sol",
"lines": [
26
],
"starting_column": 1,
"ending_column": 33
}
}
]
}
]

@ -1,67 +1,71 @@
[ {
{ "success": true,
"check": "low-level-calls", "error": null,
"impact": "Informational", "results": [
"confidence": "High", {
"description": "Low level call in Sender.send (tests/low_level_calls.sol#5-7):\n\t-_receiver.call.value(msg.value).gas(7777)() tests/low_level_calls.sol#6\n", "check": "low-level-calls",
"elements": [ "impact": "Informational",
{ "confidence": "High",
"type": "function", "description": "Low level call in Sender.send (tests/low_level_calls.sol#5-7):\n\t-_receiver.call.value(msg.value).gas(7777)() tests/low_level_calls.sol#6\n",
"name": "send", "elements": [
"source_mapping": { {
"start": 51, "type": "function",
"length": 112, "name": "send",
"filename_used": "/home/travis/build/crytic/slither/tests/low_level_calls.sol",
"filename_relative": "tests/low_level_calls.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/low_level_calls.sol",
"filename_short": "tests/low_level_calls.sol",
"lines": [
5,
6,
7
],
"starting_column": 5,
"ending_column": 6
},
"contract": {
"type": "contract",
"name": "Sender",
"source_mapping": { "source_mapping": {
"start": 29, "start": 51,
"length": 136, "length": 112,
"filename_used": "/home/travis/build/crytic/slither/tests/low_level_calls.sol", "filename_used": "/home/travis/build/crytic/slither/tests/low_level_calls.sol",
"filename_relative": "tests/low_level_calls.sol", "filename_relative": "tests/low_level_calls.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/low_level_calls.sol", "filename_absolute": "/home/travis/build/crytic/slither/tests/low_level_calls.sol",
"filename_short": "tests/low_level_calls.sol", "filename_short": "tests/low_level_calls.sol",
"lines": [ "lines": [
4,
5, 5,
6, 6,
7, 7
8
], ],
"starting_column": 1, "starting_column": 5,
"ending_column": 2 "ending_column": 6
},
"contract": {
"type": "contract",
"name": "Sender",
"source_mapping": {
"start": 29,
"length": 136,
"filename_used": "/home/travis/build/crytic/slither/tests/low_level_calls.sol",
"filename_relative": "tests/low_level_calls.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/low_level_calls.sol",
"filename_short": "tests/low_level_calls.sol",
"lines": [
4,
5,
6,
7,
8
],
"starting_column": 1,
"ending_column": 2
}
}
},
{
"type": "expression",
"expression": "_receiver.call.value(msg.value).gas(7777)()",
"source_mapping": {
"start": 111,
"length": 45,
"filename_used": "/home/travis/build/crytic/slither/tests/low_level_calls.sol",
"filename_relative": "tests/low_level_calls.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/low_level_calls.sol",
"filename_short": "tests/low_level_calls.sol",
"lines": [
6
],
"starting_column": 9,
"ending_column": 54
} }
} }
}, ]
{ }
"type": "expression", ]
"expression": "_receiver.call.value(msg.value).gas(7777)()", }
"source_mapping": {
"start": 111,
"length": 45,
"filename_used": "/home/travis/build/crytic/slither/tests/low_level_calls.sol",
"filename_relative": "tests/low_level_calls.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/low_level_calls.sol",
"filename_short": "tests/low_level_calls.sol",
"lines": [
6
],
"starting_column": 9,
"ending_column": 54
}
}
]
}
]

@ -1,79 +1,83 @@
[ {
{ "success": true,
"check": "calls-loop", "error": null,
"impact": "Low", "results": [
"confidence": "Medium", {
"description": "CallInLoop.bad has external calls inside a loop:\n\t- destinations[i].transfer(i) (tests/multiple_calls_in_loop.sol#11)\n", "check": "calls-loop",
"elements": [ "impact": "Low",
{ "confidence": "Medium",
"type": "function", "description": "CallInLoop.bad has external calls inside a loop:\n\t- destinations[i].transfer(i) (tests/multiple_calls_in_loop.sol#11)\n",
"name": "bad", "elements": [
"source_mapping": { {
"start": 153, "type": "function",
"length": 135, "name": "bad",
"filename_used": "/home/travis/build/crytic/slither/tests/multiple_calls_in_loop.sol",
"filename_relative": "tests/multiple_calls_in_loop.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/multiple_calls_in_loop.sol",
"filename_short": "tests/multiple_calls_in_loop.sol",
"lines": [
9,
10,
11,
12,
13
],
"starting_column": 5,
"ending_column": 6
},
"contract": {
"type": "contract",
"name": "CallInLoop",
"source_mapping": { "source_mapping": {
"start": 0, "start": 153,
"length": 291, "length": 135,
"filename_used": "/home/travis/build/crytic/slither/tests/multiple_calls_in_loop.sol", "filename_used": "/home/travis/build/crytic/slither/tests/multiple_calls_in_loop.sol",
"filename_relative": "tests/multiple_calls_in_loop.sol", "filename_relative": "tests/multiple_calls_in_loop.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/multiple_calls_in_loop.sol", "filename_absolute": "/home/travis/build/crytic/slither/tests/multiple_calls_in_loop.sol",
"filename_short": "tests/multiple_calls_in_loop.sol", "filename_short": "tests/multiple_calls_in_loop.sol",
"lines": [ "lines": [
1,
2,
3,
4,
5,
6,
7,
8,
9, 9,
10, 10,
11, 11,
12, 12,
13, 13
14,
15
], ],
"starting_column": 1, "starting_column": 5,
"ending_column": 2 "ending_column": 6
},
"contract": {
"type": "contract",
"name": "CallInLoop",
"source_mapping": {
"start": 0,
"length": 291,
"filename_used": "/home/travis/build/crytic/slither/tests/multiple_calls_in_loop.sol",
"filename_relative": "tests/multiple_calls_in_loop.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/multiple_calls_in_loop.sol",
"filename_short": "tests/multiple_calls_in_loop.sol",
"lines": [
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15
],
"starting_column": 1,
"ending_column": 2
}
}
},
{
"type": "expression",
"expression": "destinations[i].transfer(i)",
"source_mapping": {
"start": 244,
"length": 27,
"filename_used": "/home/travis/build/crytic/slither/tests/multiple_calls_in_loop.sol",
"filename_relative": "tests/multiple_calls_in_loop.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/multiple_calls_in_loop.sol",
"filename_short": "tests/multiple_calls_in_loop.sol",
"lines": [
11
],
"starting_column": 13,
"ending_column": 40
} }
} }
}, ]
{ }
"type": "expression", ]
"expression": "destinations[i].transfer(i)", }
"source_mapping": {
"start": 244,
"length": 27,
"filename_used": "/home/travis/build/crytic/slither/tests/multiple_calls_in_loop.sol",
"filename_relative": "tests/multiple_calls_in_loop.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/multiple_calls_in_loop.sol",
"filename_short": "tests/multiple_calls_in_loop.sol",
"lines": [
11
],
"starting_column": 13,
"ending_column": 40
}
}
]
}
]

@ -1,366 +1,370 @@
[ {
{ "success": true,
"check": "naming-convention", "error": null,
"impact": "Informational", "results": [
"confidence": "High", {
"description": "Contract 'naming' (tests/naming_convention.sol#3-48) is not in CapWords\n", "check": "naming-convention",
"elements": [ "impact": "Informational",
{ "confidence": "High",
"target": "contract", "description": "Contract 'naming' (tests/naming_convention.sol#3-48) is not in CapWords\n",
"convention": "CapWords", "elements": [
"name": "naming", {
"source_mapping": { "target": "contract",
"start": 28, "convention": "CapWords",
"length": 642, "name": "naming",
"filename_used": "/home/travis/build/crytic/slither/tests/naming_convention.sol", "source_mapping": {
"filename_relative": "tests/naming_convention.sol", "start": 28,
"filename_absolute": "/home/travis/build/crytic/slither/tests/naming_convention.sol", "length": 642,
"filename_short": "tests/naming_convention.sol", "filename_used": "/home/travis/build/crytic/slither/tests/naming_convention.sol",
"lines": [ "filename_relative": "tests/naming_convention.sol",
3, "filename_absolute": "/home/travis/build/crytic/slither/tests/naming_convention.sol",
4, "filename_short": "tests/naming_convention.sol",
5, "lines": [
6, 3,
7, 4,
8, 5,
9, 6,
10, 7,
11, 8,
12, 9,
13, 10,
14, 11,
15, 12,
16, 13,
17, 14,
18, 15,
19, 16,
20, 17,
21, 18,
22, 19,
23, 20,
24, 21,
25, 22,
26, 23,
27, 24,
28, 25,
29, 26,
30, 27,
31, 28,
32, 29,
33, 30,
34, 31,
35, 32,
36, 33,
37, 34,
38, 35,
39, 36,
40, 37,
41, 38,
42, 39,
43, 40,
44, 41,
45, 42,
46, 43,
47, 44,
48 45,
], 46,
"starting_column": 1, 47,
"ending_column": 2 48
],
"starting_column": 1,
"ending_column": 2
}
} }
} ]
] },
}, {
{ "check": "naming-convention",
"check": "naming-convention", "impact": "Informational",
"impact": "Informational", "confidence": "High",
"confidence": "High", "description": "Struct 'naming.test' (tests/naming_convention.sol#14-16) is not in CapWords\n",
"description": "Struct 'naming.test' (tests/naming_convention.sol#14-16) is not in CapWords\n", "elements": [
"elements": [ {
{ "target": "structure",
"target": "structure", "convention": "CapWords",
"convention": "CapWords", "name": "test",
"name": "test", "source_mapping": {
"source_mapping": { "start": 229,
"start": 229, "length": 35,
"length": 35, "filename_used": "/home/travis/build/crytic/slither/tests/naming_convention.sol",
"filename_used": "/home/travis/build/crytic/slither/tests/naming_convention.sol", "filename_relative": "tests/naming_convention.sol",
"filename_relative": "tests/naming_convention.sol", "filename_absolute": "/home/travis/build/crytic/slither/tests/naming_convention.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/naming_convention.sol", "filename_short": "tests/naming_convention.sol",
"filename_short": "tests/naming_convention.sol", "lines": [
"lines": [ 14,
14, 15,
15, 16
16 ],
], "starting_column": 5,
"starting_column": 5, "ending_column": 6
"ending_column": 6 }
} }
} ]
] },
}, {
{ "check": "naming-convention",
"check": "naming-convention", "impact": "Informational",
"impact": "Informational", "confidence": "High",
"confidence": "High", "description": "Event 'naming.event_' (tests/naming_convention.sol#23) is not in CapWords\n",
"description": "Event 'naming.event_' (tests/naming_convention.sol#23) is not in CapWords\n", "elements": [
"elements": [ {
{ "target": "event",
"target": "event", "convention": "CapWords",
"convention": "CapWords", "name": "event_",
"name": "event_", "source_mapping": {
"source_mapping": { "start": 335,
"start": 335, "length": 19,
"length": 19, "filename_used": "/home/travis/build/crytic/slither/tests/naming_convention.sol",
"filename_used": "/home/travis/build/crytic/slither/tests/naming_convention.sol", "filename_relative": "tests/naming_convention.sol",
"filename_relative": "tests/naming_convention.sol", "filename_absolute": "/home/travis/build/crytic/slither/tests/naming_convention.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/naming_convention.sol", "filename_short": "tests/naming_convention.sol",
"filename_short": "tests/naming_convention.sol", "lines": [
"lines": [ 23
23 ],
], "starting_column": 5,
"starting_column": 5, "ending_column": 24
"ending_column": 24 }
} }
} ]
] },
}, {
{ "check": "naming-convention",
"check": "naming-convention", "impact": "Informational",
"impact": "Informational", "confidence": "High",
"confidence": "High", "description": "Function 'naming.GetOne' (tests/naming_convention.sol#30-33) is not in mixedCase\n",
"description": "Function 'naming.GetOne' (tests/naming_convention.sol#30-33) is not in mixedCase\n", "elements": [
"elements": [ {
{ "target": "function",
"target": "function", "convention": "mixedCase",
"convention": "mixedCase", "name": "GetOne",
"name": "GetOne", "source_mapping": {
"source_mapping": { "start": 440,
"start": 440, "length": 75,
"length": 75, "filename_used": "/home/travis/build/crytic/slither/tests/naming_convention.sol",
"filename_used": "/home/travis/build/crytic/slither/tests/naming_convention.sol", "filename_relative": "tests/naming_convention.sol",
"filename_relative": "tests/naming_convention.sol", "filename_absolute": "/home/travis/build/crytic/slither/tests/naming_convention.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/naming_convention.sol", "filename_short": "tests/naming_convention.sol",
"filename_short": "tests/naming_convention.sol", "lines": [
"lines": [ 30,
30, 31,
31, 32,
32, 33
33 ],
], "starting_column": 5,
"starting_column": 5, "ending_column": 6
"ending_column": 6 }
} }
} ]
] },
}, {
{ "check": "naming-convention",
"check": "naming-convention", "impact": "Informational",
"impact": "Informational", "confidence": "High",
"confidence": "High", "description": "Parameter 'Number2' of naming.setInt (tests/naming_convention.sol#35) is not in mixedCase\n",
"description": "Parameter 'Number2' of naming.setInt (tests/naming_convention.sol#35) is not in mixedCase\n", "elements": [
"elements": [ {
{ "target": "parameter",
"target": "parameter", "convention": "mixedCase",
"convention": "mixedCase", "name": "Number2",
"name": "Number2", "source_mapping": {
"source_mapping": { "start": 551,
"start": 551, "length": 12,
"length": 12, "filename_used": "/home/travis/build/crytic/slither/tests/naming_convention.sol",
"filename_used": "/home/travis/build/crytic/slither/tests/naming_convention.sol", "filename_relative": "tests/naming_convention.sol",
"filename_relative": "tests/naming_convention.sol", "filename_absolute": "/home/travis/build/crytic/slither/tests/naming_convention.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/naming_convention.sol", "filename_short": "tests/naming_convention.sol",
"filename_short": "tests/naming_convention.sol", "lines": [
"lines": [ 35
35 ],
], "starting_column": 35,
"starting_column": 35, "ending_column": 47
"ending_column": 47 }
} }
} ]
] },
}, {
{ "check": "naming-convention",
"check": "naming-convention", "impact": "Informational",
"impact": "Informational", "confidence": "High",
"confidence": "High", "description": "Constant 'naming.MY_other_CONSTANT' (tests/naming_convention.sol#9) is not in UPPER_CASE_WITH_UNDERSCORES\n",
"description": "Constant 'naming.MY_other_CONSTANT' (tests/naming_convention.sol#9) is not in UPPER_CASE_WITH_UNDERSCORES\n", "elements": [
"elements": [ {
{ "target": "variable_constant",
"target": "variable_constant", "convention": "UPPER_CASE_WITH_UNDERSCORES",
"convention": "UPPER_CASE_WITH_UNDERSCORES", "name": "MY_other_CONSTANT",
"name": "MY_other_CONSTANT", "source_mapping": {
"source_mapping": { "start": 143,
"start": 143, "length": 35,
"length": 35, "filename_used": "/home/travis/build/crytic/slither/tests/naming_convention.sol",
"filename_used": "/home/travis/build/crytic/slither/tests/naming_convention.sol", "filename_relative": "tests/naming_convention.sol",
"filename_relative": "tests/naming_convention.sol", "filename_absolute": "/home/travis/build/crytic/slither/tests/naming_convention.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/naming_convention.sol", "filename_short": "tests/naming_convention.sol",
"filename_short": "tests/naming_convention.sol", "lines": [
"lines": [ 9
9 ],
], "starting_column": 5,
"starting_column": 5, "ending_column": 40
"ending_column": 40 }
} }
} ]
] },
}, {
{ "check": "naming-convention",
"check": "naming-convention", "impact": "Informational",
"impact": "Informational", "confidence": "High",
"confidence": "High", "description": "Variable 'naming.Var_One' (tests/naming_convention.sol#11) is not in mixedCase\n",
"description": "Variable 'naming.Var_One' (tests/naming_convention.sol#11) is not in mixedCase\n", "elements": [
"elements": [ {
{ "target": "variable",
"target": "variable", "convention": "mixedCase",
"convention": "mixedCase", "name": "Var_One",
"name": "Var_One", "source_mapping": {
"source_mapping": { "start": 185,
"start": 185, "length": 16,
"length": 16, "filename_used": "/home/travis/build/crytic/slither/tests/naming_convention.sol",
"filename_used": "/home/travis/build/crytic/slither/tests/naming_convention.sol", "filename_relative": "tests/naming_convention.sol",
"filename_relative": "tests/naming_convention.sol", "filename_absolute": "/home/travis/build/crytic/slither/tests/naming_convention.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/naming_convention.sol", "filename_short": "tests/naming_convention.sol",
"filename_short": "tests/naming_convention.sol", "lines": [
"lines": [ 11
11 ],
], "starting_column": 5,
"starting_column": 5, "ending_column": 21
"ending_column": 21 }
} }
} ]
] },
}, {
{ "check": "naming-convention",
"check": "naming-convention", "impact": "Informational",
"impact": "Informational", "confidence": "High",
"confidence": "High", "description": "Enum 'naming.numbers' (tests/naming_convention.sol#6) is not in CapWords\n",
"description": "Enum 'naming.numbers' (tests/naming_convention.sol#6) is not in CapWords\n", "elements": [
"elements": [ {
{ "target": "enum",
"target": "enum", "convention": "CapWords",
"convention": "CapWords", "name": "numbers",
"name": "numbers", "source_mapping": {
"source_mapping": { "start": 79,
"start": 79, "length": 23,
"length": 23, "filename_used": "/home/travis/build/crytic/slither/tests/naming_convention.sol",
"filename_used": "/home/travis/build/crytic/slither/tests/naming_convention.sol", "filename_relative": "tests/naming_convention.sol",
"filename_relative": "tests/naming_convention.sol", "filename_absolute": "/home/travis/build/crytic/slither/tests/naming_convention.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/naming_convention.sol", "filename_short": "tests/naming_convention.sol",
"filename_short": "tests/naming_convention.sol", "lines": [
"lines": [ 6
6 ],
], "starting_column": 5,
"starting_column": 5, "ending_column": 28
"ending_column": 28 }
} }
} ]
] },
}, {
{ "check": "naming-convention",
"check": "naming-convention", "impact": "Informational",
"impact": "Informational", "confidence": "High",
"confidence": "High", "description": "Modifier 'naming.CantDo' (tests/naming_convention.sol#41-43) is not in mixedCase\n",
"description": "Modifier 'naming.CantDo' (tests/naming_convention.sol#41-43) is not in mixedCase\n", "elements": [
"elements": [ {
{ "target": "modifier",
"target": "modifier", "convention": "mixedCase",
"convention": "mixedCase", "name": "CantDo",
"name": "CantDo", "source_mapping": {
"source_mapping": { "start": 591,
"start": 591, "length": 36,
"length": 36, "filename_used": "/home/travis/build/crytic/slither/tests/naming_convention.sol",
"filename_used": "/home/travis/build/crytic/slither/tests/naming_convention.sol", "filename_relative": "tests/naming_convention.sol",
"filename_relative": "tests/naming_convention.sol", "filename_absolute": "/home/travis/build/crytic/slither/tests/naming_convention.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/naming_convention.sol", "filename_short": "tests/naming_convention.sol",
"filename_short": "tests/naming_convention.sol", "lines": [
"lines": [ 41,
41, 42,
42, 43
43 ],
], "starting_column": 5,
"starting_column": 5, "ending_column": 6
"ending_column": 6 }
} }
} ]
] },
}, {
{ "check": "naming-convention",
"check": "naming-convention", "impact": "Informational",
"impact": "Informational", "confidence": "High",
"confidence": "High", "description": "Parameter '_used' of T.test (tests/naming_convention.sol#59) is not in mixedCase\n",
"description": "Parameter '_used' of T.test (tests/naming_convention.sol#59) is not in mixedCase\n", "elements": [
"elements": [ {
{ "target": "parameter",
"target": "parameter", "convention": "mixedCase",
"convention": "mixedCase", "name": "_used",
"name": "_used", "source_mapping": {
"source_mapping": { "start": 794,
"start": 794, "length": 10,
"length": 10, "filename_used": "/home/travis/build/crytic/slither/tests/naming_convention.sol",
"filename_used": "/home/travis/build/crytic/slither/tests/naming_convention.sol", "filename_relative": "tests/naming_convention.sol",
"filename_relative": "tests/naming_convention.sol", "filename_absolute": "/home/travis/build/crytic/slither/tests/naming_convention.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/naming_convention.sol", "filename_short": "tests/naming_convention.sol",
"filename_short": "tests/naming_convention.sol", "lines": [
"lines": [ 59
59 ],
], "starting_column": 33,
"starting_column": 33, "ending_column": 43
"ending_column": 43 }
} }
} ]
] },
}, {
{ "check": "naming-convention",
"check": "naming-convention", "impact": "Informational",
"impact": "Informational", "confidence": "High",
"confidence": "High", "description": "Variable 'T._myPublicVar' (tests/naming_convention.sol#56) is not in mixedCase\n",
"description": "Variable 'T._myPublicVar' (tests/naming_convention.sol#56) is not in mixedCase\n", "elements": [
"elements": [ {
{ "target": "variable",
"target": "variable", "convention": "mixedCase",
"convention": "mixedCase", "name": "_myPublicVar",
"name": "_myPublicVar", "source_mapping": {
"source_mapping": { "start": 741,
"start": 741, "length": 17,
"length": 17, "filename_used": "/home/travis/build/crytic/slither/tests/naming_convention.sol",
"filename_used": "/home/travis/build/crytic/slither/tests/naming_convention.sol", "filename_relative": "tests/naming_convention.sol",
"filename_relative": "tests/naming_convention.sol", "filename_absolute": "/home/travis/build/crytic/slither/tests/naming_convention.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/naming_convention.sol", "filename_short": "tests/naming_convention.sol",
"filename_short": "tests/naming_convention.sol", "lines": [
"lines": [ 56
56 ],
], "starting_column": 5,
"starting_column": 5, "ending_column": 22
"ending_column": 22 }
} }
} ]
] },
}, {
{ "check": "naming-convention",
"check": "naming-convention", "impact": "Informational",
"impact": "Informational", "confidence": "High",
"confidence": "High", "description": "Variable 'T.l' (tests/naming_convention.sol#67) used l, O, I, which should not be used\n",
"description": "Variable 'T.l' (tests/naming_convention.sol#67) used l, O, I, which should not be used\n", "elements": [
"elements": [ {
{ "target": "variable",
"target": "variable", "convention": "l_O_I_should_not_be_used",
"convention": "l_O_I_should_not_be_used", "name": "l",
"name": "l", "source_mapping": {
"source_mapping": { "start": 900,
"start": 900, "length": 10,
"length": 10, "filename_used": "/home/travis/build/crytic/slither/tests/naming_convention.sol",
"filename_used": "/home/travis/build/crytic/slither/tests/naming_convention.sol", "filename_relative": "tests/naming_convention.sol",
"filename_relative": "tests/naming_convention.sol", "filename_absolute": "/home/travis/build/crytic/slither/tests/naming_convention.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/naming_convention.sol", "filename_short": "tests/naming_convention.sol",
"filename_short": "tests/naming_convention.sol", "lines": [
"lines": [ 67
67 ],
], "starting_column": 5,
"starting_column": 5, "ending_column": 15
"ending_column": 15 }
} }
} ]
] }
} ]
] }

@ -1,25 +1,29 @@
[ {
{ "success": true,
"check": "solc-version", "error": null,
"impact": "Informational", "results": [
"confidence": "High", {
"description": "Detected issues with version pragma in tests/old_solc.sol.json:\n\t- pragma solidity0.4.21 (None): it allows old versions\n", "check": "solc-version",
"elements": [ "impact": "Informational",
{ "confidence": "High",
"type": "expression", "description": "Detected issues with version pragma in tests/old_solc.sol.json:\n\t- pragma solidity0.4.21 (None): it allows old versions\n",
"expression": "0.4.21", "elements": [
"source_mapping": { {
"start": 0, "type": "expression",
"length": 23, "expression": "0.4.21",
"filename_used": "old_solc.sol", "source_mapping": {
"filename_relative": null, "start": 0,
"filename_absolute": null, "length": 23,
"filename_short": null, "filename_used": "old_solc.sol",
"lines": [], "filename_relative": null,
"starting_column": null, "filename_absolute": null,
"ending_column": null "filename_short": null,
"lines": [],
"starting_column": null,
"ending_column": null
}
} }
} ]
] }
} ]
] }

@ -1,44 +1,48 @@
[ {
{ "success": true,
"check": "pragma", "error": null,
"impact": "Informational", "results": [
"confidence": "High", {
"description": "Different versions of Solidity is used in :\n\t- Version used: ['^0.4.23', '^0.4.24']\n\t- tests/pragma.0.4.23.sol#1 declares pragma solidity^0.4.23\n\t- tests/pragma.0.4.24.sol#1 declares pragma solidity^0.4.24\n", "check": "pragma",
"elements": [ "impact": "Informational",
{ "confidence": "High",
"type": "expression", "description": "Different versions of Solidity is used in :\n\t- Version used: ['^0.4.23', '^0.4.24']\n\t- tests/pragma.0.4.23.sol#1 declares pragma solidity^0.4.23\n\t- tests/pragma.0.4.24.sol#1 declares pragma solidity^0.4.24\n",
"expression": "^0.4.23", "elements": [
"source_mapping": { {
"start": 0, "type": "expression",
"length": 24, "expression": "^0.4.23",
"filename_used": "/home/travis/build/crytic/slither/tests/pragma.0.4.23.sol", "source_mapping": {
"filename_relative": "tests/pragma.0.4.23.sol", "start": 0,
"filename_absolute": "/home/travis/build/crytic/slither/tests/pragma.0.4.23.sol", "length": 24,
"filename_short": "tests/pragma.0.4.23.sol", "filename_used": "/home/travis/build/crytic/slither/tests/pragma.0.4.23.sol",
"lines": [ "filename_relative": "tests/pragma.0.4.23.sol",
1 "filename_absolute": "/home/travis/build/crytic/slither/tests/pragma.0.4.23.sol",
], "filename_short": "tests/pragma.0.4.23.sol",
"starting_column": 1, "lines": [
"ending_column": 25 1
],
"starting_column": 1,
"ending_column": 25
}
},
{
"type": "expression",
"expression": "^0.4.24",
"source_mapping": {
"start": 0,
"length": 24,
"filename_used": "/home/travis/build/crytic/slither/tests/pragma.0.4.24.sol",
"filename_relative": "tests/pragma.0.4.24.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/pragma.0.4.24.sol",
"filename_short": "tests/pragma.0.4.24.sol",
"lines": [
1
],
"starting_column": 1,
"ending_column": 25
}
} }
}, ]
{ }
"type": "expression", ]
"expression": "^0.4.24", }
"source_mapping": {
"start": 0,
"length": 24,
"filename_used": "/home/travis/build/crytic/slither/tests/pragma.0.4.24.sol",
"filename_relative": "tests/pragma.0.4.24.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/pragma.0.4.24.sol",
"filename_short": "tests/pragma.0.4.24.sol",
"lines": [
1
],
"starting_column": 1,
"ending_column": 25
}
}
]
}
]

@ -1,44 +1,8 @@
ERROR:root:Error in tests/pragma.0.4.24.sol INFO:Detectors:
ERROR:root:Traceback (most recent call last): Different versions of Solidity is used in :
File "/home/monty/Private/tob/tools/crytic-compile/crytic_compile/platform/solc.py", line 189, in _run_solc - Version used: ['^0.4.23', '^0.4.24']
ret = json.loads(stdout) - tests/pragma.0.4.23.sol#1 declares pragma solidity^0.4.23
File "/usr/lib/python3.6/json/__init__.py", line 354, in loads - tests/pragma.0.4.24.sol#1 declares pragma solidity^0.4.24
return _default_decoder.decode(s) Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#different-pragma-directives-are-used
File "/usr/lib/python3.6/json/decoder.py", line 339, in decode INFO:Slither:/home/travis/build/crytic/slither/scripts/../tests/expected_json/pragma.0.4.24.pragma.json exists already, the overwrite is prevented
obj, end = self.raw_decode(s, idx=_w(s, 0).end()) INFO:Slither:tests/pragma.0.4.24.sol analyzed (1 contracts), 1 result(s) found
File "/usr/lib/python3.6/json/decoder.py", line 357, in raw_decode
raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/travis/build/crytic/slither/slither/slither.py", line 55, in __init__
crytic_compile = CryticCompile(contract, **kwargs)
File "/home/monty/Private/tob/tools/crytic-compile/crytic_compile/crytic_compile.py", line 68, in __init__
self._compile(target, **kwargs)
File "/home/monty/Private/tob/tools/crytic-compile/crytic_compile/crytic_compile.py", line 590, in _compile
self._platform.compile(self, target, **kwargs)
File "/home/monty/Private/tob/tools/crytic-compile/crytic_compile/platform/solc.py", line 33, in compile
working_dir=solc_working_dir)
File "/home/monty/Private/tob/tools/crytic-compile/crytic_compile/platform/solc.py", line 192, in _run_solc
raise InvalidCompilation(f'Invalid solc compilation {stderr}')
crytic_compile.platform.exceptions.InvalidCompilation: Invalid solc compilation tests/pragma.0.4.23.sol:1:1: Error: Source file requires different compiler version (current compiler is 0.5.1+commit.c8a2cb62.Linux.g++ - note that nightly builds are considered to be strictly less than the released version
pragma solidity ^0.4.23;
^----------------------^
tests/pragma.0.4.24.sol:1:1: Error: Source file requires different compiler version (current compiler is 0.5.1+commit.c8a2cb62.Linux.g++ - note that nightly builds are considered to be strictly less than the released version
pragma solidity ^0.4.24;
^----------------------^
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/travis/build/crytic/slither/slither/__main__.py", line 520, in main_impl
(results, number_contracts) = process(filename, args, detector_classes, printer_classes)
File "/home/travis/build/crytic/slither/slither/__main__.py", line 52, in process
**vars(args))
File "/home/travis/build/crytic/slither/slither/slither.py", line 58, in __init__
raise SlitherError('Invalid compilation: '+e)
TypeError: must be str, not InvalidCompilation

@ -1,56 +1,24 @@
[ {
{ "success": true,
"check": "reentrancy-eth", "error": null,
"impact": "High", "results": [
"confidence": "Medium", {
"description": "Reentrancy in Reentrancy.withdrawBalance (tests/reentrancy-0.5.1.sol#14-22):\n\tExternal calls:\n\t- (ret,mem) = msg.sender.call.value(userBalance[msg.sender])() (tests/reentrancy-0.5.1.sol#17)\n\tState variables written after the call(s):\n\t- userBalance (tests/reentrancy-0.5.1.sol#21)\n", "check": "reentrancy-eth",
"elements": [ "impact": "High",
{ "confidence": "Medium",
"type": "function", "description": "Reentrancy in Reentrancy.withdrawBalance (tests/reentrancy-0.5.1.sol#14-22):\n\tExternal calls:\n\t- (ret,mem) = msg.sender.call.value(userBalance[msg.sender])() (tests/reentrancy-0.5.1.sol#17)\n\tState variables written after the call(s):\n\t- userBalance (tests/reentrancy-0.5.1.sol#21)\n",
"name": "withdrawBalance", "elements": [
"source_mapping": { {
"start": 298, "type": "function",
"length": 357, "name": "withdrawBalance",
"filename_used": "/home/travis/build/crytic/slither/tests/reentrancy-0.5.1.sol",
"filename_relative": "tests/reentrancy-0.5.1.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/reentrancy-0.5.1.sol",
"filename_short": "tests/reentrancy-0.5.1.sol",
"lines": [
14,
15,
16,
17,
18,
19,
20,
21,
22
],
"starting_column": 5,
"ending_column": 6
},
"contract": {
"type": "contract",
"name": "Reentrancy",
"source_mapping": { "source_mapping": {
"start": 25, "start": 298,
"length": 1807, "length": 357,
"filename_used": "/home/travis/build/crytic/slither/tests/reentrancy-0.5.1.sol", "filename_used": "/home/travis/build/crytic/slither/tests/reentrancy-0.5.1.sol",
"filename_relative": "tests/reentrancy-0.5.1.sol", "filename_relative": "tests/reentrancy-0.5.1.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/reentrancy-0.5.1.sol", "filename_absolute": "/home/travis/build/crytic/slither/tests/reentrancy-0.5.1.sol",
"filename_short": "tests/reentrancy-0.5.1.sol", "filename_short": "tests/reentrancy-0.5.1.sol",
"lines": [ "lines": [
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14, 14,
15, 15,
16, 16,
@ -59,165 +27,134 @@
19, 19,
20, 20,
21, 21,
22, 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
], ],
"starting_column": 1, "starting_column": 5,
"ending_column": 2 "ending_column": 6
},
"contract": {
"type": "contract",
"name": "Reentrancy",
"source_mapping": {
"start": 25,
"length": 1807,
"filename_used": "/home/travis/build/crytic/slither/tests/reentrancy-0.5.1.sol",
"filename_relative": "tests/reentrancy-0.5.1.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/reentrancy-0.5.1.sol",
"filename_short": "tests/reentrancy-0.5.1.sol",
"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
],
"starting_column": 1,
"ending_column": 2
}
} }
}
},
{
"type": "external_calls",
"expression": "(ret,mem) = msg.sender.call.value(userBalance[msg.sender])()",
"source_mapping": {
"start": 477,
"length": 81,
"filename_used": "/home/travis/build/crytic/slither/tests/reentrancy-0.5.1.sol",
"filename_relative": "tests/reentrancy-0.5.1.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/reentrancy-0.5.1.sol",
"filename_short": "tests/reentrancy-0.5.1.sol",
"lines": [
17
],
"starting_column": 9,
"ending_column": 90
}
},
{
"type": "variables_written",
"name": "userBalance",
"expression": "userBalance[msg.sender] = 0",
"source_mapping": {
"start": 621,
"length": 27,
"filename_used": "/home/travis/build/crytic/slither/tests/reentrancy-0.5.1.sol",
"filename_relative": "tests/reentrancy-0.5.1.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/reentrancy-0.5.1.sol",
"filename_short": "tests/reentrancy-0.5.1.sol",
"lines": [
21
],
"starting_column": 9,
"ending_column": 36
}
}
]
},
{
"check": "reentrancy-eth",
"impact": "High",
"confidence": "Medium",
"description": "Reentrancy in Reentrancy.withdrawBalance_fixed_3 (tests/reentrancy-0.5.1.sol#44-53):\n\tExternal calls:\n\t- (ret,mem) = msg.sender.call.value(amount)() (tests/reentrancy-0.5.1.sol#49)\n\tState variables written after the call(s):\n\t- userBalance (tests/reentrancy-0.5.1.sol#51)\n",
"elements": [
{
"type": "function",
"name": "withdrawBalance_fixed_3",
"source_mapping": {
"start": 1434,
"length": 393,
"filename_used": "/home/travis/build/crytic/slither/tests/reentrancy-0.5.1.sol",
"filename_relative": "tests/reentrancy-0.5.1.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/reentrancy-0.5.1.sol",
"filename_short": "tests/reentrancy-0.5.1.sol",
"lines": [
44,
45,
46,
47,
48,
49,
50,
51,
52,
53
],
"starting_column": 5,
"ending_column": 6
}, },
"contract": { {
"type": "contract", "type": "external_calls",
"name": "Reentrancy", "expression": "(ret,mem) = msg.sender.call.value(userBalance[msg.sender])()",
"source_mapping": { "source_mapping": {
"start": 25, "start": 477,
"length": 1807, "length": 81,
"filename_used": "/home/travis/build/crytic/slither/tests/reentrancy-0.5.1.sol",
"filename_relative": "tests/reentrancy-0.5.1.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/reentrancy-0.5.1.sol",
"filename_short": "tests/reentrancy-0.5.1.sol",
"lines": [
17
],
"starting_column": 9,
"ending_column": 90
}
},
{
"type": "variables_written",
"name": "userBalance",
"expression": "userBalance[msg.sender] = 0",
"source_mapping": {
"start": 621,
"length": 27,
"filename_used": "/home/travis/build/crytic/slither/tests/reentrancy-0.5.1.sol",
"filename_relative": "tests/reentrancy-0.5.1.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/reentrancy-0.5.1.sol",
"filename_short": "tests/reentrancy-0.5.1.sol",
"lines": [
21
],
"starting_column": 9,
"ending_column": 36
}
}
]
},
{
"check": "reentrancy-eth",
"impact": "High",
"confidence": "Medium",
"description": "Reentrancy in Reentrancy.withdrawBalance_fixed_3 (tests/reentrancy-0.5.1.sol#44-53):\n\tExternal calls:\n\t- (ret,mem) = msg.sender.call.value(amount)() (tests/reentrancy-0.5.1.sol#49)\n\tState variables written after the call(s):\n\t- userBalance (tests/reentrancy-0.5.1.sol#51)\n",
"elements": [
{
"type": "function",
"name": "withdrawBalance_fixed_3",
"source_mapping": {
"start": 1434,
"length": 393,
"filename_used": "/home/travis/build/crytic/slither/tests/reentrancy-0.5.1.sol", "filename_used": "/home/travis/build/crytic/slither/tests/reentrancy-0.5.1.sol",
"filename_relative": "tests/reentrancy-0.5.1.sol", "filename_relative": "tests/reentrancy-0.5.1.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/reentrancy-0.5.1.sol", "filename_absolute": "/home/travis/build/crytic/slither/tests/reentrancy-0.5.1.sol",
"filename_short": "tests/reentrancy-0.5.1.sol", "filename_short": "tests/reentrancy-0.5.1.sol",
"lines": [ "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, 44,
45, 45,
46, 46,
@ -227,49 +164,116 @@
50, 50,
51, 51,
52, 52,
53, 53
54
], ],
"starting_column": 1, "starting_column": 5,
"ending_column": 2 "ending_column": 6
},
"contract": {
"type": "contract",
"name": "Reentrancy",
"source_mapping": {
"start": 25,
"length": 1807,
"filename_used": "/home/travis/build/crytic/slither/tests/reentrancy-0.5.1.sol",
"filename_relative": "tests/reentrancy-0.5.1.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/reentrancy-0.5.1.sol",
"filename_short": "tests/reentrancy-0.5.1.sol",
"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
],
"starting_column": 1,
"ending_column": 2
}
}
},
{
"type": "external_calls",
"expression": "(ret,mem) = msg.sender.call.value(amount)()",
"source_mapping": {
"start": 1679,
"length": 64,
"filename_used": "/home/travis/build/crytic/slither/tests/reentrancy-0.5.1.sol",
"filename_relative": "tests/reentrancy-0.5.1.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/reentrancy-0.5.1.sol",
"filename_short": "tests/reentrancy-0.5.1.sol",
"lines": [
49
],
"starting_column": 9,
"ending_column": 73
}
},
{
"type": "variables_written",
"name": "userBalance",
"expression": "userBalance[msg.sender] = amount",
"source_mapping": {
"start": 1778,
"length": 32,
"filename_used": "/home/travis/build/crytic/slither/tests/reentrancy-0.5.1.sol",
"filename_relative": "tests/reentrancy-0.5.1.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/reentrancy-0.5.1.sol",
"filename_short": "tests/reentrancy-0.5.1.sol",
"lines": [
51
],
"starting_column": 13,
"ending_column": 45
} }
} }
}, ]
{ }
"type": "external_calls", ]
"expression": "(ret,mem) = msg.sender.call.value(amount)()", }
"source_mapping": {
"start": 1679,
"length": 64,
"filename_used": "/home/travis/build/crytic/slither/tests/reentrancy-0.5.1.sol",
"filename_relative": "tests/reentrancy-0.5.1.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/reentrancy-0.5.1.sol",
"filename_short": "tests/reentrancy-0.5.1.sol",
"lines": [
49
],
"starting_column": 9,
"ending_column": 73
}
},
{
"type": "variables_written",
"name": "userBalance",
"expression": "userBalance[msg.sender] = amount",
"source_mapping": {
"start": 1778,
"length": 32,
"filename_used": "/home/travis/build/crytic/slither/tests/reentrancy-0.5.1.sol",
"filename_relative": "tests/reentrancy-0.5.1.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/reentrancy-0.5.1.sol",
"filename_short": "tests/reentrancy-0.5.1.sol",
"lines": [
51
],
"starting_column": 13,
"ending_column": 45
}
}
]
}
]

@ -1,10 +0,0 @@
Traceback (most recent call last):
File "/home/monty/Envs/slither/bin/slither", line 11, in <module>
load_entry_point('slither-analyzer', 'console_scripts', 'slither')()
File "/home/travis/build/crytic/slither/slither/__main__.py", line 470, in main
main_impl(all_detector_classes=detectors, all_printer_classes=printers)
File "/home/travis/build/crytic/slither/slither/__main__.py", line 484, in main_impl
detector_classes = choose_detectors(args, all_detector_classes)
File "/home/travis/build/crytic/slither/slither/__main__.py", line 177, in choose_detectors
raise Exception('Error: {} is not a detector'.format(d))
Exception: Error: reentrancy is not a detector

@ -1,55 +1,24 @@
[ {
{ "success": true,
"check": "reentrancy-eth", "error": null,
"impact": "High", "results": [
"confidence": "Medium", {
"description": "Reentrancy in Reentrancy.withdrawBalance (tests/reentrancy.sol#14-21):\n\tExternal calls:\n\t- ! (msg.sender.call.value(userBalance[msg.sender])()) (tests/reentrancy.sol#17-19)\n\tState variables written after the call(s):\n\t- userBalance (tests/reentrancy.sol#20)\n", "check": "reentrancy-eth",
"elements": [ "impact": "High",
{ "confidence": "Medium",
"type": "function", "description": "Reentrancy in Reentrancy.withdrawBalance (tests/reentrancy.sol#14-21):\n\tExternal calls:\n\t- ! (msg.sender.call.value(userBalance[msg.sender])()) (tests/reentrancy.sol#17-19)\n\tState variables written after the call(s):\n\t- userBalance (tests/reentrancy.sol#20)\n",
"name": "withdrawBalance", "elements": [
"source_mapping": { {
"start": 299, "type": "function",
"length": 314, "name": "withdrawBalance",
"filename_used": "/home/travis/build/crytic/slither/tests/reentrancy.sol",
"filename_relative": "tests/reentrancy.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/reentrancy.sol",
"filename_short": "tests/reentrancy.sol",
"lines": [
14,
15,
16,
17,
18,
19,
20,
21
],
"starting_column": 5,
"ending_column": 6
},
"contract": {
"type": "contract",
"name": "Reentrancy",
"source_mapping": { "source_mapping": {
"start": 26, "start": 299,
"length": 2334, "length": 314,
"filename_used": "/home/travis/build/crytic/slither/tests/reentrancy.sol", "filename_used": "/home/travis/build/crytic/slither/tests/reentrancy.sol",
"filename_relative": "tests/reentrancy.sol", "filename_relative": "tests/reentrancy.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/reentrancy.sol", "filename_absolute": "/home/travis/build/crytic/slither/tests/reentrancy.sol",
"filename_short": "tests/reentrancy.sol", "filename_short": "tests/reentrancy.sol",
"lines": [ "lines": [
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14, 14,
15, 15,
16, 16,
@ -57,253 +26,288 @@
18, 18,
19, 19,
20, 20,
21, 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,
66,
67,
68,
69,
70,
71,
72
], ],
"starting_column": 1, "starting_column": 5,
"ending_column": 2 "ending_column": 6
},
"contract": {
"type": "contract",
"name": "Reentrancy",
"source_mapping": {
"start": 26,
"length": 2334,
"filename_used": "/home/travis/build/crytic/slither/tests/reentrancy.sol",
"filename_relative": "tests/reentrancy.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/reentrancy.sol",
"filename_short": "tests/reentrancy.sol",
"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,
66,
67,
68,
69,
70,
71,
72
],
"starting_column": 1,
"ending_column": 2
}
} }
}
},
{
"type": "external_calls",
"expression": "! (msg.sender.call.value(userBalance[msg.sender])())",
"source_mapping": {
"start": 478,
"length": 92,
"filename_used": "/home/travis/build/crytic/slither/tests/reentrancy.sol",
"filename_relative": "tests/reentrancy.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/reentrancy.sol",
"filename_short": "tests/reentrancy.sol",
"lines": [
17,
18,
19
],
"starting_column": 9,
"ending_column": 10
}
},
{
"type": "variables_written",
"name": "userBalance",
"expression": "userBalance[msg.sender] = 0",
"source_mapping": {
"start": 579,
"length": 27,
"filename_used": "/home/travis/build/crytic/slither/tests/reentrancy.sol",
"filename_relative": "tests/reentrancy.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/reentrancy.sol",
"filename_short": "tests/reentrancy.sol",
"lines": [
20
],
"starting_column": 9,
"ending_column": 36
}
}
]
},
{
"check": "reentrancy-eth",
"impact": "High",
"confidence": "Medium",
"description": "Reentrancy in Reentrancy.withdrawBalance_nested (tests/reentrancy.sol#64-70):\n\tExternal calls:\n\t- msg.sender.call.value(amount / 2)() (tests/reentrancy.sol#67)\n\tState variables written after the call(s):\n\t- userBalance (tests/reentrancy.sol#68)\n",
"elements": [
{
"type": "function",
"name": "withdrawBalance_nested",
"source_mapping": {
"start": 2108,
"length": 246,
"filename_used": "/home/travis/build/crytic/slither/tests/reentrancy.sol",
"filename_relative": "tests/reentrancy.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/reentrancy.sol",
"filename_short": "tests/reentrancy.sol",
"lines": [
64,
65,
66,
67,
68,
69,
70
],
"starting_column": 5,
"ending_column": 6
}, },
"contract": { {
"type": "contract", "type": "external_calls",
"name": "Reentrancy", "expression": "! (msg.sender.call.value(userBalance[msg.sender])())",
"source_mapping": { "source_mapping": {
"start": 26, "start": 478,
"length": 2334, "length": 92,
"filename_used": "/home/travis/build/crytic/slither/tests/reentrancy.sol", "filename_used": "/home/travis/build/crytic/slither/tests/reentrancy.sol",
"filename_relative": "tests/reentrancy.sol", "filename_relative": "tests/reentrancy.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/reentrancy.sol", "filename_absolute": "/home/travis/build/crytic/slither/tests/reentrancy.sol",
"filename_short": "tests/reentrancy.sol", "filename_short": "tests/reentrancy.sol",
"lines": [ "lines": [
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17, 17,
18, 18,
19, 19
20, ],
21, "starting_column": 9,
22, "ending_column": 10
23, }
24, },
25, {
26, "type": "variables_written",
27, "name": "userBalance",
28, "expression": "userBalance[msg.sender] = 0",
29, "source_mapping": {
30, "start": 579,
31, "length": 27,
32, "filename_used": "/home/travis/build/crytic/slither/tests/reentrancy.sol",
33, "filename_relative": "tests/reentrancy.sol",
34, "filename_absolute": "/home/travis/build/crytic/slither/tests/reentrancy.sol",
35, "filename_short": "tests/reentrancy.sol",
36, "lines": [
37, 20
38, ],
39, "starting_column": 9,
40, "ending_column": 36
41, }
42, }
43, ]
44, },
45, {
46, "check": "reentrancy-eth",
47, "impact": "High",
48, "confidence": "Medium",
49, "description": "Reentrancy in Reentrancy.withdrawBalance_nested (tests/reentrancy.sol#64-70):\n\tExternal calls:\n\t- msg.sender.call.value(amount / 2)() (tests/reentrancy.sol#67)\n\tState variables written after the call(s):\n\t- userBalance (tests/reentrancy.sol#68)\n",
50, "elements": [
51, {
52, "type": "function",
53, "name": "withdrawBalance_nested",
54, "source_mapping": {
55, "start": 2108,
56, "length": 246,
57, "filename_used": "/home/travis/build/crytic/slither/tests/reentrancy.sol",
58, "filename_relative": "tests/reentrancy.sol",
59, "filename_absolute": "/home/travis/build/crytic/slither/tests/reentrancy.sol",
60, "filename_short": "tests/reentrancy.sol",
61, "lines": [
62,
63,
64, 64,
65, 65,
66, 66,
67, 67,
68, 68,
69, 69,
70, 70
71,
72
], ],
"starting_column": 1, "starting_column": 5,
"ending_column": 2 "ending_column": 6
},
"contract": {
"type": "contract",
"name": "Reentrancy",
"source_mapping": {
"start": 26,
"length": 2334,
"filename_used": "/home/travis/build/crytic/slither/tests/reentrancy.sol",
"filename_relative": "tests/reentrancy.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/reentrancy.sol",
"filename_short": "tests/reentrancy.sol",
"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,
66,
67,
68,
69,
70,
71,
72
],
"starting_column": 1,
"ending_column": 2
}
}
},
{
"type": "external_calls",
"expression": "msg.sender.call.value(amount / 2)()",
"source_mapping": {
"start": 2263,
"length": 33,
"filename_used": "/home/travis/build/crytic/slither/tests/reentrancy.sol",
"filename_relative": "tests/reentrancy.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/reentrancy.sol",
"filename_short": "tests/reentrancy.sol",
"lines": [
67
],
"starting_column": 13,
"ending_column": 46
}
},
{
"type": "variables_written",
"name": "userBalance",
"expression": "userBalance[msg.sender] = 0",
"source_mapping": {
"start": 2310,
"length": 27,
"filename_used": "/home/travis/build/crytic/slither/tests/reentrancy.sol",
"filename_relative": "tests/reentrancy.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/reentrancy.sol",
"filename_short": "tests/reentrancy.sol",
"lines": [
68
],
"starting_column": 13,
"ending_column": 40
} }
} }
}, ]
{ }
"type": "external_calls", ]
"expression": "msg.sender.call.value(amount / 2)()", }
"source_mapping": {
"start": 2263,
"length": 33,
"filename_used": "/home/travis/build/crytic/slither/tests/reentrancy.sol",
"filename_relative": "tests/reentrancy.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/reentrancy.sol",
"filename_short": "tests/reentrancy.sol",
"lines": [
67
],
"starting_column": 13,
"ending_column": 46
}
},
{
"type": "variables_written",
"name": "userBalance",
"expression": "userBalance[msg.sender] = 0",
"source_mapping": {
"start": 2310,
"length": 27,
"filename_used": "/home/travis/build/crytic/slither/tests/reentrancy.sol",
"filename_relative": "tests/reentrancy.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/reentrancy.sol",
"filename_short": "tests/reentrancy.sol",
"lines": [
68
],
"starting_column": 13,
"ending_column": 40
}
}
]
}
]

@ -1,9 +1,13 @@
[ {
{ "success": true,
"check": "rtlo", "error": null,
"impact": "High", "results": [
"confidence": "High", {
"description": "/home/travis/build/crytic/slither/tests/right_to_left_override.sol contains a unicode right-to-left-override character:\n\t- test1(/*A\u202e/*B*/2 , 1/*\u202d\n", "check": "rtlo",
"elements": [] "impact": "High",
} "confidence": "High",
] "description": "/home/travis/build/crytic/slither/tests/right_to_left_override.sol contains a unicode right-to-left-override character:\n\t- test1(/*A\u202e/*B*/2 , 1/*\u202d\n",
"elements": []
}
]
}

@ -1,44 +1,48 @@
[ {
{ "success": true,
"check": "shadowing-abstract", "error": null,
"impact": "Medium", "results": [
"confidence": "High", {
"description": "DerivedContract.owner (tests/shadowing_abstract.sol#7) shadows:\n\t- BaseContract.owner (tests/shadowing_abstract.sol#2)\n", "check": "shadowing-abstract",
"elements": [ "impact": "Medium",
{ "confidence": "High",
"type": "variable", "description": "DerivedContract.owner (tests/shadowing_abstract.sol#7) shadows:\n\t- BaseContract.owner (tests/shadowing_abstract.sol#2)\n",
"name": "owner", "elements": [
"source_mapping": { {
"start": 92, "type": "variable",
"length": 13, "name": "owner",
"filename_used": "/home/travis/build/crytic/slither/tests/shadowing_abstract.sol", "source_mapping": {
"filename_relative": "tests/shadowing_abstract.sol", "start": 92,
"filename_absolute": "/home/travis/build/crytic/slither/tests/shadowing_abstract.sol", "length": 13,
"filename_short": "tests/shadowing_abstract.sol", "filename_used": "/home/travis/build/crytic/slither/tests/shadowing_abstract.sol",
"lines": [ "filename_relative": "tests/shadowing_abstract.sol",
7 "filename_absolute": "/home/travis/build/crytic/slither/tests/shadowing_abstract.sol",
], "filename_short": "tests/shadowing_abstract.sol",
"starting_column": 5, "lines": [
"ending_column": 18 7
],
"starting_column": 5,
"ending_column": 18
}
},
{
"type": "variable",
"name": "owner",
"source_mapping": {
"start": 27,
"length": 13,
"filename_used": "/home/travis/build/crytic/slither/tests/shadowing_abstract.sol",
"filename_relative": "tests/shadowing_abstract.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/shadowing_abstract.sol",
"filename_short": "tests/shadowing_abstract.sol",
"lines": [
2
],
"starting_column": 5,
"ending_column": 18
}
} }
}, ]
{ }
"type": "variable", ]
"name": "owner", }
"source_mapping": {
"start": 27,
"length": 13,
"filename_used": "/home/travis/build/crytic/slither/tests/shadowing_abstract.sol",
"filename_relative": "tests/shadowing_abstract.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/shadowing_abstract.sol",
"filename_short": "tests/shadowing_abstract.sol",
"lines": [
2
],
"starting_column": 5,
"ending_column": 18
}
}
]
}
]

@ -1,407 +1,411 @@
[ {
{ "success": true,
"check": "shadowing-builtin", "error": null,
"impact": "Low", "results": [
"confidence": "High", {
"description": "BaseContract.blockhash (state variable @ tests/shadowing_builtin_symbols.sol#4) shadows built-in symbol \"blockhash\"\n", "check": "shadowing-builtin",
"elements": [ "impact": "Low",
{ "confidence": "High",
"type": "variable", "description": "BaseContract.blockhash (state variable @ tests/shadowing_builtin_symbols.sol#4) shadows built-in symbol \"blockhash\"\n",
"name": "blockhash", "elements": [
"source_mapping": { {
"start": 54, "type": "variable",
"length": 14, "name": "blockhash",
"filename_used": "/home/travis/build/crytic/slither/tests/shadowing_builtin_symbols.sol", "source_mapping": {
"filename_relative": "tests/shadowing_builtin_symbols.sol", "start": 54,
"filename_absolute": "/home/travis/build/crytic/slither/tests/shadowing_builtin_symbols.sol", "length": 14,
"filename_short": "tests/shadowing_builtin_symbols.sol", "filename_used": "/home/travis/build/crytic/slither/tests/shadowing_builtin_symbols.sol",
"lines": [ "filename_relative": "tests/shadowing_builtin_symbols.sol",
4 "filename_absolute": "/home/travis/build/crytic/slither/tests/shadowing_builtin_symbols.sol",
], "filename_short": "tests/shadowing_builtin_symbols.sol",
"starting_column": 5, "lines": [
"ending_column": 19 4
],
"starting_column": 5,
"ending_column": 19
}
} }
} ]
] },
}, {
{ "check": "shadowing-builtin",
"check": "shadowing-builtin", "impact": "Low",
"impact": "Low", "confidence": "High",
"confidence": "High", "description": "BaseContract.now (state variable @ tests/shadowing_builtin_symbols.sol#5) shadows built-in symbol \"now\"\n",
"description": "BaseContract.now (state variable @ tests/shadowing_builtin_symbols.sol#5) shadows built-in symbol \"now\"\n", "elements": [
"elements": [ {
{ "type": "variable",
"type": "variable", "name": "now",
"name": "now", "source_mapping": {
"source_mapping": { "start": 74,
"start": 74, "length": 8,
"length": 8, "filename_used": "/home/travis/build/crytic/slither/tests/shadowing_builtin_symbols.sol",
"filename_used": "/home/travis/build/crytic/slither/tests/shadowing_builtin_symbols.sol", "filename_relative": "tests/shadowing_builtin_symbols.sol",
"filename_relative": "tests/shadowing_builtin_symbols.sol", "filename_absolute": "/home/travis/build/crytic/slither/tests/shadowing_builtin_symbols.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/shadowing_builtin_symbols.sol", "filename_short": "tests/shadowing_builtin_symbols.sol",
"filename_short": "tests/shadowing_builtin_symbols.sol", "lines": [
"lines": [ 5
5 ],
], "starting_column": 5,
"starting_column": 5, "ending_column": 13
"ending_column": 13 }
} }
} ]
] },
}, {
{ "check": "shadowing-builtin",
"check": "shadowing-builtin", "impact": "Low",
"impact": "Low", "confidence": "High",
"confidence": "High", "description": "BaseContract.revert (event @ tests/shadowing_builtin_symbols.sol#7) shadows built-in symbol \"revert\"\n",
"description": "BaseContract.revert (event @ tests/shadowing_builtin_symbols.sol#7) shadows built-in symbol \"revert\"\n", "elements": [
"elements": [ {
{ "type": "function",
"type": "function", "name": "revert",
"name": "revert",
"source_mapping": {
"start": 89,
"length": 29,
"filename_used": "/home/travis/build/crytic/slither/tests/shadowing_builtin_symbols.sol",
"filename_relative": "tests/shadowing_builtin_symbols.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/shadowing_builtin_symbols.sol",
"filename_short": "tests/shadowing_builtin_symbols.sol",
"lines": [
7
],
"starting_column": 5,
"ending_column": 34
},
"contract": {
"type": "contract",
"name": "BaseContract",
"source_mapping": { "source_mapping": {
"start": 26, "start": 89,
"length": 94, "length": 29,
"filename_used": "/home/travis/build/crytic/slither/tests/shadowing_builtin_symbols.sol", "filename_used": "/home/travis/build/crytic/slither/tests/shadowing_builtin_symbols.sol",
"filename_relative": "tests/shadowing_builtin_symbols.sol", "filename_relative": "tests/shadowing_builtin_symbols.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/shadowing_builtin_symbols.sol", "filename_absolute": "/home/travis/build/crytic/slither/tests/shadowing_builtin_symbols.sol",
"filename_short": "tests/shadowing_builtin_symbols.sol", "filename_short": "tests/shadowing_builtin_symbols.sol",
"lines": [ "lines": [
3, 7
4,
5,
6,
7,
8
], ],
"starting_column": 1, "starting_column": 5,
"ending_column": 2 "ending_column": 34
},
"contract": {
"type": "contract",
"name": "BaseContract",
"source_mapping": {
"start": 26,
"length": 94,
"filename_used": "/home/travis/build/crytic/slither/tests/shadowing_builtin_symbols.sol",
"filename_relative": "tests/shadowing_builtin_symbols.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/shadowing_builtin_symbols.sol",
"filename_short": "tests/shadowing_builtin_symbols.sol",
"lines": [
3,
4,
5,
6,
7,
8
],
"starting_column": 1,
"ending_column": 2
}
} }
} }
} ]
] },
}, {
{ "check": "shadowing-builtin",
"check": "shadowing-builtin", "impact": "Low",
"impact": "Low", "confidence": "High",
"confidence": "High", "description": "ExtendedContract.assert (function @ tests/shadowing_builtin_symbols.sol#13-15) shadows built-in symbol \"assert\"\n",
"description": "ExtendedContract.assert (function @ tests/shadowing_builtin_symbols.sol#13-15) shadows built-in symbol \"assert\"\n", "elements": [
"elements": [ {
{ "type": "function",
"type": "function", "name": "assert",
"name": "assert",
"source_mapping": {
"start": 195,
"length": 64,
"filename_used": "/home/travis/build/crytic/slither/tests/shadowing_builtin_symbols.sol",
"filename_relative": "tests/shadowing_builtin_symbols.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/shadowing_builtin_symbols.sol",
"filename_short": "tests/shadowing_builtin_symbols.sol",
"lines": [
13,
14,
15
],
"starting_column": 5,
"ending_column": 6
},
"contract": {
"type": "contract",
"name": "ExtendedContract",
"source_mapping": { "source_mapping": {
"start": 122, "start": 195,
"length": 139, "length": 64,
"filename_used": "/home/travis/build/crytic/slither/tests/shadowing_builtin_symbols.sol", "filename_used": "/home/travis/build/crytic/slither/tests/shadowing_builtin_symbols.sol",
"filename_relative": "tests/shadowing_builtin_symbols.sol", "filename_relative": "tests/shadowing_builtin_symbols.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/shadowing_builtin_symbols.sol", "filename_absolute": "/home/travis/build/crytic/slither/tests/shadowing_builtin_symbols.sol",
"filename_short": "tests/shadowing_builtin_symbols.sol", "filename_short": "tests/shadowing_builtin_symbols.sol",
"lines": [ "lines": [
10,
11,
12,
13, 13,
14, 14,
15, 15
16
], ],
"starting_column": 1, "starting_column": 5,
"ending_column": 2 "ending_column": 6
},
"contract": {
"type": "contract",
"name": "ExtendedContract",
"source_mapping": {
"start": 122,
"length": 139,
"filename_used": "/home/travis/build/crytic/slither/tests/shadowing_builtin_symbols.sol",
"filename_relative": "tests/shadowing_builtin_symbols.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/shadowing_builtin_symbols.sol",
"filename_short": "tests/shadowing_builtin_symbols.sol",
"lines": [
10,
11,
12,
13,
14,
15,
16
],
"starting_column": 1,
"ending_column": 2
}
} }
} }
} ]
] },
}, {
{ "check": "shadowing-builtin",
"check": "shadowing-builtin", "impact": "Low",
"impact": "Low", "confidence": "High",
"confidence": "High", "description": "ExtendedContract.assert.msg (local variable @ tests/shadowing_builtin_symbols.sol#14) shadows built-in symbol \"msg\"\n",
"description": "ExtendedContract.assert.msg (local variable @ tests/shadowing_builtin_symbols.sol#14) shadows built-in symbol \"msg\"\n", "elements": [
"elements": [ {
{ "type": "variable",
"type": "variable", "name": "msg",
"name": "msg", "source_mapping": {
"source_mapping": { "start": 244,
"start": 244, "length": 8,
"length": 8, "filename_used": "/home/travis/build/crytic/slither/tests/shadowing_builtin_symbols.sol",
"filename_used": "/home/travis/build/crytic/slither/tests/shadowing_builtin_symbols.sol", "filename_relative": "tests/shadowing_builtin_symbols.sol",
"filename_relative": "tests/shadowing_builtin_symbols.sol", "filename_absolute": "/home/travis/build/crytic/slither/tests/shadowing_builtin_symbols.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/shadowing_builtin_symbols.sol", "filename_short": "tests/shadowing_builtin_symbols.sol",
"filename_short": "tests/shadowing_builtin_symbols.sol", "lines": [
"lines": [ 14
14 ],
], "starting_column": 9,
"starting_column": 9, "ending_column": 17
"ending_column": 17 }
} }
} ]
] },
}, {
{ "check": "shadowing-builtin",
"check": "shadowing-builtin", "impact": "Low",
"impact": "Low", "confidence": "High",
"confidence": "High", "description": "ExtendedContract.ecrecover (state variable @ tests/shadowing_builtin_symbols.sol#11) shadows built-in symbol \"ecrecover\"\n",
"description": "ExtendedContract.ecrecover (state variable @ tests/shadowing_builtin_symbols.sol#11) shadows built-in symbol \"ecrecover\"\n", "elements": [
"elements": [ {
{ "type": "variable",
"type": "variable", "name": "ecrecover",
"name": "ecrecover", "source_mapping": {
"source_mapping": { "start": 170,
"start": 170, "length": 18,
"length": 18, "filename_used": "/home/travis/build/crytic/slither/tests/shadowing_builtin_symbols.sol",
"filename_used": "/home/travis/build/crytic/slither/tests/shadowing_builtin_symbols.sol", "filename_relative": "tests/shadowing_builtin_symbols.sol",
"filename_relative": "tests/shadowing_builtin_symbols.sol", "filename_absolute": "/home/travis/build/crytic/slither/tests/shadowing_builtin_symbols.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/shadowing_builtin_symbols.sol", "filename_short": "tests/shadowing_builtin_symbols.sol",
"filename_short": "tests/shadowing_builtin_symbols.sol", "lines": [
"lines": [ 11
11 ],
], "starting_column": 5,
"starting_column": 5, "ending_column": 23
"ending_column": 23 }
} }
} ]
] },
}, {
{ "check": "shadowing-builtin",
"check": "shadowing-builtin", "impact": "Low",
"impact": "Low", "confidence": "High",
"confidence": "High", "description": "FurtherExtendedContract.require (modifier @ tests/shadowing_builtin_symbols.sol#23-28) shadows built-in symbol \"require\"\n",
"description": "FurtherExtendedContract.require (modifier @ tests/shadowing_builtin_symbols.sol#23-28) shadows built-in symbol \"require\"\n", "elements": [
"elements": [ {
{ "type": "function",
"type": "function", "name": "require",
"name": "require",
"source_mapping": {
"start": 380,
"length": 120,
"filename_used": "/home/travis/build/crytic/slither/tests/shadowing_builtin_symbols.sol",
"filename_relative": "tests/shadowing_builtin_symbols.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/shadowing_builtin_symbols.sol",
"filename_short": "tests/shadowing_builtin_symbols.sol",
"lines": [
23,
24,
25,
26,
27,
28
],
"starting_column": 5,
"ending_column": 6
},
"contract": {
"type": "contract",
"name": "FurtherExtendedContract",
"source_mapping": { "source_mapping": {
"start": 263, "start": 380,
"length": 239, "length": 120,
"filename_used": "/home/travis/build/crytic/slither/tests/shadowing_builtin_symbols.sol", "filename_used": "/home/travis/build/crytic/slither/tests/shadowing_builtin_symbols.sol",
"filename_relative": "tests/shadowing_builtin_symbols.sol", "filename_relative": "tests/shadowing_builtin_symbols.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/shadowing_builtin_symbols.sol", "filename_absolute": "/home/travis/build/crytic/slither/tests/shadowing_builtin_symbols.sol",
"filename_short": "tests/shadowing_builtin_symbols.sol", "filename_short": "tests/shadowing_builtin_symbols.sol",
"lines": [ "lines": [
18,
19,
20,
21,
22,
23, 23,
24, 24,
25, 25,
26, 26,
27, 27,
28, 28
29
], ],
"starting_column": 1, "starting_column": 5,
"ending_column": 2 "ending_column": 6
},
"contract": {
"type": "contract",
"name": "FurtherExtendedContract",
"source_mapping": {
"start": 263,
"length": 239,
"filename_used": "/home/travis/build/crytic/slither/tests/shadowing_builtin_symbols.sol",
"filename_relative": "tests/shadowing_builtin_symbols.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/shadowing_builtin_symbols.sol",
"filename_short": "tests/shadowing_builtin_symbols.sol",
"lines": [
18,
19,
20,
21,
22,
23,
24,
25,
26,
27,
28,
29
],
"starting_column": 1,
"ending_column": 2
}
} }
} }
} ]
] },
}, {
{ "check": "shadowing-builtin",
"check": "shadowing-builtin", "impact": "Low",
"impact": "Low", "confidence": "High",
"confidence": "High", "description": "FurtherExtendedContract.require.keccak256 (local variable @ tests/shadowing_builtin_symbols.sol#25) shadows built-in symbol \"keccak256\"\n",
"description": "FurtherExtendedContract.require.keccak256 (local variable @ tests/shadowing_builtin_symbols.sol#25) shadows built-in symbol \"keccak256\"\n", "elements": [
"elements": [ {
{ "type": "variable",
"type": "variable", "name": "keccak256",
"name": "keccak256", "source_mapping": {
"source_mapping": { "start": 449,
"start": 449, "length": 14,
"length": 14, "filename_used": "/home/travis/build/crytic/slither/tests/shadowing_builtin_symbols.sol",
"filename_used": "/home/travis/build/crytic/slither/tests/shadowing_builtin_symbols.sol", "filename_relative": "tests/shadowing_builtin_symbols.sol",
"filename_relative": "tests/shadowing_builtin_symbols.sol", "filename_absolute": "/home/travis/build/crytic/slither/tests/shadowing_builtin_symbols.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/shadowing_builtin_symbols.sol", "filename_short": "tests/shadowing_builtin_symbols.sol",
"filename_short": "tests/shadowing_builtin_symbols.sol", "lines": [
"lines": [ 25
25 ],
], "starting_column": 9,
"starting_column": 9, "ending_column": 23
"ending_column": 23 }
} }
} ]
] },
}, {
{ "check": "shadowing-builtin",
"check": "shadowing-builtin", "impact": "Low",
"impact": "Low", "confidence": "High",
"confidence": "High", "description": "FurtherExtendedContract.require.sha3 (local variable @ tests/shadowing_builtin_symbols.sol#26) shadows built-in symbol \"sha3\"\n",
"description": "FurtherExtendedContract.require.sha3 (local variable @ tests/shadowing_builtin_symbols.sol#26) shadows built-in symbol \"sha3\"\n", "elements": [
"elements": [ {
{ "type": "variable",
"type": "variable", "name": "sha3",
"name": "sha3", "source_mapping": {
"source_mapping": { "start": 473,
"start": 473, "length": 9,
"length": 9, "filename_used": "/home/travis/build/crytic/slither/tests/shadowing_builtin_symbols.sol",
"filename_used": "/home/travis/build/crytic/slither/tests/shadowing_builtin_symbols.sol", "filename_relative": "tests/shadowing_builtin_symbols.sol",
"filename_relative": "tests/shadowing_builtin_symbols.sol", "filename_absolute": "/home/travis/build/crytic/slither/tests/shadowing_builtin_symbols.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/shadowing_builtin_symbols.sol", "filename_short": "tests/shadowing_builtin_symbols.sol",
"filename_short": "tests/shadowing_builtin_symbols.sol", "lines": [
"lines": [ 26
26 ],
], "starting_column": 9,
"starting_column": 9, "ending_column": 18
"ending_column": 18 }
} }
} ]
] },
}, {
{ "check": "shadowing-builtin",
"check": "shadowing-builtin", "impact": "Low",
"impact": "Low", "confidence": "High",
"confidence": "High", "description": "FurtherExtendedContract.blockhash (state variable @ tests/shadowing_builtin_symbols.sol#19) shadows built-in symbol \"blockhash\"\n",
"description": "FurtherExtendedContract.blockhash (state variable @ tests/shadowing_builtin_symbols.sol#19) shadows built-in symbol \"blockhash\"\n", "elements": [
"elements": [ {
{ "type": "variable",
"type": "variable", "name": "blockhash",
"name": "blockhash", "source_mapping": {
"source_mapping": { "start": 322,
"start": 322, "length": 18,
"length": 18, "filename_used": "/home/travis/build/crytic/slither/tests/shadowing_builtin_symbols.sol",
"filename_used": "/home/travis/build/crytic/slither/tests/shadowing_builtin_symbols.sol", "filename_relative": "tests/shadowing_builtin_symbols.sol",
"filename_relative": "tests/shadowing_builtin_symbols.sol", "filename_absolute": "/home/travis/build/crytic/slither/tests/shadowing_builtin_symbols.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/shadowing_builtin_symbols.sol", "filename_short": "tests/shadowing_builtin_symbols.sol",
"filename_short": "tests/shadowing_builtin_symbols.sol", "lines": [
"lines": [ 19
19 ],
], "starting_column": 5,
"starting_column": 5, "ending_column": 23
"ending_column": 23 }
} }
} ]
] },
}, {
{ "check": "shadowing-builtin",
"check": "shadowing-builtin", "impact": "Low",
"impact": "Low", "confidence": "High",
"confidence": "High", "description": "FurtherExtendedContract.this (state variable @ tests/shadowing_builtin_symbols.sol#20) shadows built-in symbol \"this\"\n",
"description": "FurtherExtendedContract.this (state variable @ tests/shadowing_builtin_symbols.sol#20) shadows built-in symbol \"this\"\n", "elements": [
"elements": [ {
{ "type": "variable",
"type": "variable", "name": "this",
"name": "this", "source_mapping": {
"source_mapping": { "start": 346,
"start": 346, "length": 13,
"length": 13, "filename_used": "/home/travis/build/crytic/slither/tests/shadowing_builtin_symbols.sol",
"filename_used": "/home/travis/build/crytic/slither/tests/shadowing_builtin_symbols.sol", "filename_relative": "tests/shadowing_builtin_symbols.sol",
"filename_relative": "tests/shadowing_builtin_symbols.sol", "filename_absolute": "/home/travis/build/crytic/slither/tests/shadowing_builtin_symbols.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/shadowing_builtin_symbols.sol", "filename_short": "tests/shadowing_builtin_symbols.sol",
"filename_short": "tests/shadowing_builtin_symbols.sol", "lines": [
"lines": [ 20
20 ],
], "starting_column": 5,
"starting_column": 5, "ending_column": 18
"ending_column": 18 }
} }
} ]
] },
}, {
{ "check": "shadowing-builtin",
"check": "shadowing-builtin", "impact": "Low",
"impact": "Low", "confidence": "High",
"confidence": "High", "description": "FurtherExtendedContract.abi (state variable @ tests/shadowing_builtin_symbols.sol#21) shadows built-in symbol \"abi\"\n",
"description": "FurtherExtendedContract.abi (state variable @ tests/shadowing_builtin_symbols.sol#21) shadows built-in symbol \"abi\"\n", "elements": [
"elements": [ {
{ "type": "variable",
"type": "variable", "name": "abi",
"name": "abi", "source_mapping": {
"source_mapping": { "start": 365,
"start": 365, "length": 8,
"length": 8, "filename_used": "/home/travis/build/crytic/slither/tests/shadowing_builtin_symbols.sol",
"filename_used": "/home/travis/build/crytic/slither/tests/shadowing_builtin_symbols.sol", "filename_relative": "tests/shadowing_builtin_symbols.sol",
"filename_relative": "tests/shadowing_builtin_symbols.sol", "filename_absolute": "/home/travis/build/crytic/slither/tests/shadowing_builtin_symbols.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/shadowing_builtin_symbols.sol", "filename_short": "tests/shadowing_builtin_symbols.sol",
"filename_short": "tests/shadowing_builtin_symbols.sol", "lines": [
"lines": [ 21
21 ],
], "starting_column": 5,
"starting_column": 5, "ending_column": 13
"ending_column": 13 }
} }
} ]
] },
}, {
{ "check": "shadowing-builtin",
"check": "shadowing-builtin", "impact": "Low",
"impact": "Low", "confidence": "High",
"confidence": "High", "description": "Reserved.mutable (state variable @ tests/shadowing_builtin_symbols.sol#32) shadows built-in symbol \"mutable\"\n",
"description": "Reserved.mutable (state variable @ tests/shadowing_builtin_symbols.sol#32) shadows built-in symbol \"mutable\"\n", "elements": [
"elements": [ {
{ "type": "variable",
"type": "variable", "name": "mutable",
"name": "mutable", "source_mapping": {
"source_mapping": { "start": 527,
"start": 527, "length": 15,
"length": 15, "filename_used": "/home/travis/build/crytic/slither/tests/shadowing_builtin_symbols.sol",
"filename_used": "/home/travis/build/crytic/slither/tests/shadowing_builtin_symbols.sol", "filename_relative": "tests/shadowing_builtin_symbols.sol",
"filename_relative": "tests/shadowing_builtin_symbols.sol", "filename_absolute": "/home/travis/build/crytic/slither/tests/shadowing_builtin_symbols.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/shadowing_builtin_symbols.sol", "filename_short": "tests/shadowing_builtin_symbols.sol",
"filename_short": "tests/shadowing_builtin_symbols.sol", "lines": [
"lines": [ 32
32 ],
], "starting_column": 5,
"starting_column": 5, "ending_column": 20
"ending_column": 20 }
} }
} ]
] }
} ]
] }

@ -1,322 +1,326 @@
[ {
{ "success": true,
"check": "shadowing-local", "error": null,
"impact": "Low", "results": [
"confidence": "High", {
"description": "FurtherExtendedContract.shadowingParent.x (local variable @ tests/shadowing_local_variable.sol#25) shadows:\n\t- FurtherExtendedContract.x (state variable @ tests/shadowing_local_variable.sol#17)\n\t- ExtendedContract.x (state variable @ tests/shadowing_local_variable.sol#9)\n\t- BaseContract.x (state variable @ tests/shadowing_local_variable.sol#4)\n", "check": "shadowing-local",
"elements": [ "impact": "Low",
{ "confidence": "High",
"type": "variable", "description": "FurtherExtendedContract.shadowingParent.x (local variable @ tests/shadowing_local_variable.sol#25) shadows:\n\t- FurtherExtendedContract.x (state variable @ tests/shadowing_local_variable.sol#17)\n\t- ExtendedContract.x (state variable @ tests/shadowing_local_variable.sol#9)\n\t- BaseContract.x (state variable @ tests/shadowing_local_variable.sol#4)\n",
"name": "x", "elements": [
"source_mapping": { {
"start": 376, "type": "variable",
"length": 6, "name": "x",
"filename_used": "/home/travis/build/crytic/slither/tests/shadowing_local_variable.sol", "source_mapping": {
"filename_relative": "tests/shadowing_local_variable.sol", "start": 376,
"filename_absolute": "/home/travis/build/crytic/slither/tests/shadowing_local_variable.sol", "length": 6,
"filename_short": "tests/shadowing_local_variable.sol", "filename_used": "/home/travis/build/crytic/slither/tests/shadowing_local_variable.sol",
"lines": [ "filename_relative": "tests/shadowing_local_variable.sol",
25 "filename_absolute": "/home/travis/build/crytic/slither/tests/shadowing_local_variable.sol",
], "filename_short": "tests/shadowing_local_variable.sol",
"starting_column": 30, "lines": [
"ending_column": 36 25
} ],
}, "starting_column": 30,
{ "ending_column": 36
"type": "variable", }
"name": "x", },
"source_mapping": { {
"start": 256, "type": "variable",
"length": 10, "name": "x",
"filename_used": "/home/travis/build/crytic/slither/tests/shadowing_local_variable.sol", "source_mapping": {
"filename_relative": "tests/shadowing_local_variable.sol", "start": 256,
"filename_absolute": "/home/travis/build/crytic/slither/tests/shadowing_local_variable.sol", "length": 10,
"filename_short": "tests/shadowing_local_variable.sol", "filename_used": "/home/travis/build/crytic/slither/tests/shadowing_local_variable.sol",
"lines": [ "filename_relative": "tests/shadowing_local_variable.sol",
17 "filename_absolute": "/home/travis/build/crytic/slither/tests/shadowing_local_variable.sol",
], "filename_short": "tests/shadowing_local_variable.sol",
"starting_column": 5, "lines": [
"ending_column": 15 17
} ],
}, "starting_column": 5,
{ "ending_column": 15
"type": "variable", }
"name": "x", },
"source_mapping": { {
"start": 133, "type": "variable",
"length": 10, "name": "x",
"filename_used": "/home/travis/build/crytic/slither/tests/shadowing_local_variable.sol", "source_mapping": {
"filename_relative": "tests/shadowing_local_variable.sol", "start": 133,
"filename_absolute": "/home/travis/build/crytic/slither/tests/shadowing_local_variable.sol", "length": 10,
"filename_short": "tests/shadowing_local_variable.sol", "filename_used": "/home/travis/build/crytic/slither/tests/shadowing_local_variable.sol",
"lines": [ "filename_relative": "tests/shadowing_local_variable.sol",
9 "filename_absolute": "/home/travis/build/crytic/slither/tests/shadowing_local_variable.sol",
], "filename_short": "tests/shadowing_local_variable.sol",
"starting_column": 5, "lines": [
"ending_column": 15 9
} ],
}, "starting_column": 5,
{ "ending_column": 15
"type": "variable", }
"name": "x", },
"source_mapping": { {
"start": 54, "type": "variable",
"length": 10, "name": "x",
"filename_used": "/home/travis/build/crytic/slither/tests/shadowing_local_variable.sol", "source_mapping": {
"filename_relative": "tests/shadowing_local_variable.sol", "start": 54,
"filename_absolute": "/home/travis/build/crytic/slither/tests/shadowing_local_variable.sol", "length": 10,
"filename_short": "tests/shadowing_local_variable.sol", "filename_used": "/home/travis/build/crytic/slither/tests/shadowing_local_variable.sol",
"lines": [ "filename_relative": "tests/shadowing_local_variable.sol",
4 "filename_absolute": "/home/travis/build/crytic/slither/tests/shadowing_local_variable.sol",
], "filename_short": "tests/shadowing_local_variable.sol",
"starting_column": 5, "lines": [
"ending_column": 15 4
} ],
} "starting_column": 5,
] "ending_column": 15
}, }
{
"check": "shadowing-local",
"impact": "Low",
"confidence": "High",
"description": "FurtherExtendedContract.shadowingParent.y (local variable @ tests/shadowing_local_variable.sol#25) shadows:\n\t- BaseContract.y (state variable @ tests/shadowing_local_variable.sol#5)\n",
"elements": [
{
"type": "variable",
"name": "y",
"source_mapping": {
"start": 398,
"length": 5,
"filename_used": "/home/travis/build/crytic/slither/tests/shadowing_local_variable.sol",
"filename_relative": "tests/shadowing_local_variable.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/shadowing_local_variable.sol",
"filename_short": "tests/shadowing_local_variable.sol",
"lines": [
25
],
"starting_column": 52,
"ending_column": 57
}
},
{
"type": "variable",
"name": "y",
"source_mapping": {
"start": 70,
"length": 10,
"filename_used": "/home/travis/build/crytic/slither/tests/shadowing_local_variable.sol",
"filename_relative": "tests/shadowing_local_variable.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/shadowing_local_variable.sol",
"filename_short": "tests/shadowing_local_variable.sol",
"lines": [
5
],
"starting_column": 5,
"ending_column": 15
}
}
]
},
{
"check": "shadowing-local",
"impact": "Low",
"confidence": "High",
"description": "FurtherExtendedContract.shadowingParent.z (local variable @ tests/shadowing_local_variable.sol#25) shadows:\n\t- ExtendedContract.z (function @ tests/shadowing_local_variable.sol#11)\n",
"elements": [
{
"type": "variable",
"name": "z",
"source_mapping": {
"start": 405,
"length": 6,
"filename_used": "/home/travis/build/crytic/slither/tests/shadowing_local_variable.sol",
"filename_relative": "tests/shadowing_local_variable.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/shadowing_local_variable.sol",
"filename_short": "tests/shadowing_local_variable.sol",
"lines": [
25
],
"starting_column": 59,
"ending_column": 65
} }
}, ]
{ },
"type": "function", {
"name": "z", "check": "shadowing-local",
"source_mapping": { "impact": "Low",
"start": 150, "confidence": "High",
"length": 27, "description": "FurtherExtendedContract.shadowingParent.y (local variable @ tests/shadowing_local_variable.sol#25) shadows:\n\t- BaseContract.y (state variable @ tests/shadowing_local_variable.sol#5)\n",
"filename_used": "/home/travis/build/crytic/slither/tests/shadowing_local_variable.sol", "elements": [
"filename_relative": "tests/shadowing_local_variable.sol", {
"filename_absolute": "/home/travis/build/crytic/slither/tests/shadowing_local_variable.sol", "type": "variable",
"filename_short": "tests/shadowing_local_variable.sol", "name": "y",
"lines": [ "source_mapping": {
11 "start": 398,
], "length": 5,
"starting_column": 5, "filename_used": "/home/travis/build/crytic/slither/tests/shadowing_local_variable.sol",
"ending_column": 32 "filename_relative": "tests/shadowing_local_variable.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/shadowing_local_variable.sol",
"filename_short": "tests/shadowing_local_variable.sol",
"lines": [
25
],
"starting_column": 52,
"ending_column": 57
}
}, },
"contract": { {
"type": "contract", "type": "variable",
"name": "ExtendedContract", "name": "y",
"source_mapping": { "source_mapping": {
"start": 85, "start": 70,
"length": 110, "length": 10,
"filename_used": "/home/travis/build/crytic/slither/tests/shadowing_local_variable.sol", "filename_used": "/home/travis/build/crytic/slither/tests/shadowing_local_variable.sol",
"filename_relative": "tests/shadowing_local_variable.sol", "filename_relative": "tests/shadowing_local_variable.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/shadowing_local_variable.sol", "filename_absolute": "/home/travis/build/crytic/slither/tests/shadowing_local_variable.sol",
"filename_short": "tests/shadowing_local_variable.sol", "filename_short": "tests/shadowing_local_variable.sol",
"lines": [ "lines": [
8, 5
9,
10,
11,
12,
13,
14
], ],
"starting_column": 1, "starting_column": 5,
"ending_column": 2 "ending_column": 15
} }
} }
} ]
] },
}, {
{ "check": "shadowing-local",
"check": "shadowing-local", "impact": "Low",
"impact": "Low", "confidence": "High",
"confidence": "High", "description": "FurtherExtendedContract.shadowingParent.z (local variable @ tests/shadowing_local_variable.sol#25) shadows:\n\t- ExtendedContract.z (function @ tests/shadowing_local_variable.sol#11)\n",
"description": "FurtherExtendedContract.shadowingParent.w (local variable @ tests/shadowing_local_variable.sol#25) shadows:\n\t- FurtherExtendedContract.w (modifier @ tests/shadowing_local_variable.sol#20-23)\n", "elements": [
"elements": [ {
{ "type": "variable",
"type": "variable", "name": "z",
"name": "w", "source_mapping": {
"source_mapping": { "start": 405,
"start": 413, "length": 6,
"length": 6, "filename_used": "/home/travis/build/crytic/slither/tests/shadowing_local_variable.sol",
"filename_used": "/home/travis/build/crytic/slither/tests/shadowing_local_variable.sol", "filename_relative": "tests/shadowing_local_variable.sol",
"filename_relative": "tests/shadowing_local_variable.sol", "filename_absolute": "/home/travis/build/crytic/slither/tests/shadowing_local_variable.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/shadowing_local_variable.sol", "filename_short": "tests/shadowing_local_variable.sol",
"filename_short": "tests/shadowing_local_variable.sol", "lines": [
"lines": [ 25
25 ],
], "starting_column": 59,
"starting_column": 67, "ending_column": 65
"ending_column": 73 }
},
{
"type": "function",
"name": "z",
"source_mapping": {
"start": 150,
"length": 27,
"filename_used": "/home/travis/build/crytic/slither/tests/shadowing_local_variable.sol",
"filename_relative": "tests/shadowing_local_variable.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/shadowing_local_variable.sol",
"filename_short": "tests/shadowing_local_variable.sol",
"lines": [
11
],
"starting_column": 5,
"ending_column": 32
},
"contract": {
"type": "contract",
"name": "ExtendedContract",
"source_mapping": {
"start": 85,
"length": 110,
"filename_used": "/home/travis/build/crytic/slither/tests/shadowing_local_variable.sol",
"filename_relative": "tests/shadowing_local_variable.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/shadowing_local_variable.sol",
"filename_short": "tests/shadowing_local_variable.sol",
"lines": [
8,
9,
10,
11,
12,
13,
14
],
"starting_column": 1,
"ending_column": 2
}
}
} }
}, ]
{ },
"type": "function", {
"name": "w", "check": "shadowing-local",
"source_mapping": { "impact": "Low",
"start": 274, "confidence": "High",
"length": 71, "description": "FurtherExtendedContract.shadowingParent.w (local variable @ tests/shadowing_local_variable.sol#25) shadows:\n\t- FurtherExtendedContract.w (modifier @ tests/shadowing_local_variable.sol#20-23)\n",
"filename_used": "/home/travis/build/crytic/slither/tests/shadowing_local_variable.sol", "elements": [
"filename_relative": "tests/shadowing_local_variable.sol", {
"filename_absolute": "/home/travis/build/crytic/slither/tests/shadowing_local_variable.sol", "type": "variable",
"filename_short": "tests/shadowing_local_variable.sol", "name": "w",
"lines": [ "source_mapping": {
20, "start": 413,
21, "length": 6,
22, "filename_used": "/home/travis/build/crytic/slither/tests/shadowing_local_variable.sol",
23 "filename_relative": "tests/shadowing_local_variable.sol",
], "filename_absolute": "/home/travis/build/crytic/slither/tests/shadowing_local_variable.sol",
"starting_column": 5, "filename_short": "tests/shadowing_local_variable.sol",
"ending_column": 6 "lines": [
25
],
"starting_column": 67,
"ending_column": 73
}
}, },
"contract": { {
"type": "contract", "type": "function",
"name": "FurtherExtendedContract", "name": "w",
"source_mapping": { "source_mapping": {
"start": 197, "start": 274,
"length": 235, "length": 71,
"filename_used": "/home/travis/build/crytic/slither/tests/shadowing_local_variable.sol", "filename_used": "/home/travis/build/crytic/slither/tests/shadowing_local_variable.sol",
"filename_relative": "tests/shadowing_local_variable.sol", "filename_relative": "tests/shadowing_local_variable.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/shadowing_local_variable.sol", "filename_absolute": "/home/travis/build/crytic/slither/tests/shadowing_local_variable.sol",
"filename_short": "tests/shadowing_local_variable.sol", "filename_short": "tests/shadowing_local_variable.sol",
"lines": [ "lines": [
16,
17,
18,
19,
20, 20,
21, 21,
22, 22,
23, 23
24,
25,
26
], ],
"starting_column": 1, "starting_column": 5,
"ending_column": 2 "ending_column": 6
},
"contract": {
"type": "contract",
"name": "FurtherExtendedContract",
"source_mapping": {
"start": 197,
"length": 235,
"filename_used": "/home/travis/build/crytic/slither/tests/shadowing_local_variable.sol",
"filename_relative": "tests/shadowing_local_variable.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/shadowing_local_variable.sol",
"filename_short": "tests/shadowing_local_variable.sol",
"lines": [
16,
17,
18,
19,
20,
21,
22,
23,
24,
25,
26
],
"starting_column": 1,
"ending_column": 2
}
} }
} }
} ]
] },
}, {
{ "check": "shadowing-local",
"check": "shadowing-local", "impact": "Low",
"impact": "Low", "confidence": "High",
"confidence": "High", "description": "FurtherExtendedContract.shadowingParent.v (local variable @ tests/shadowing_local_variable.sol#25) shadows:\n\t- ExtendedContract.v (event @ tests/shadowing_local_variable.sol#13)\n",
"description": "FurtherExtendedContract.shadowingParent.v (local variable @ tests/shadowing_local_variable.sol#25) shadows:\n\t- ExtendedContract.v (event @ tests/shadowing_local_variable.sol#13)\n", "elements": [
"elements": [ {
{ "type": "variable",
"type": "variable", "name": "v",
"name": "v", "source_mapping": {
"source_mapping": { "start": 421,
"start": 421, "length": 6,
"length": 6, "filename_used": "/home/travis/build/crytic/slither/tests/shadowing_local_variable.sol",
"filename_used": "/home/travis/build/crytic/slither/tests/shadowing_local_variable.sol", "filename_relative": "tests/shadowing_local_variable.sol",
"filename_relative": "tests/shadowing_local_variable.sol", "filename_absolute": "/home/travis/build/crytic/slither/tests/shadowing_local_variable.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/shadowing_local_variable.sol", "filename_short": "tests/shadowing_local_variable.sol",
"filename_short": "tests/shadowing_local_variable.sol", "lines": [
"lines": [ 25
25 ],
], "starting_column": 75,
"starting_column": 75, "ending_column": 81
"ending_column": 81 }
}
},
{
"type": "function",
"name": "v",
"source_mapping": {
"start": 183,
"length": 10,
"filename_used": "/home/travis/build/crytic/slither/tests/shadowing_local_variable.sol",
"filename_relative": "tests/shadowing_local_variable.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/shadowing_local_variable.sol",
"filename_short": "tests/shadowing_local_variable.sol",
"lines": [
13
],
"starting_column": 5,
"ending_column": 15
}, },
"contract": { {
"type": "contract", "type": "function",
"name": "ExtendedContract", "name": "v",
"source_mapping": { "source_mapping": {
"start": 85, "start": 183,
"length": 110, "length": 10,
"filename_used": "/home/travis/build/crytic/slither/tests/shadowing_local_variable.sol", "filename_used": "/home/travis/build/crytic/slither/tests/shadowing_local_variable.sol",
"filename_relative": "tests/shadowing_local_variable.sol", "filename_relative": "tests/shadowing_local_variable.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/shadowing_local_variable.sol", "filename_absolute": "/home/travis/build/crytic/slither/tests/shadowing_local_variable.sol",
"filename_short": "tests/shadowing_local_variable.sol", "filename_short": "tests/shadowing_local_variable.sol",
"lines": [ "lines": [
8, 13
9,
10,
11,
12,
13,
14
], ],
"starting_column": 1, "starting_column": 5,
"ending_column": 2 "ending_column": 15
},
"contract": {
"type": "contract",
"name": "ExtendedContract",
"source_mapping": {
"start": 85,
"length": 110,
"filename_used": "/home/travis/build/crytic/slither/tests/shadowing_local_variable.sol",
"filename_relative": "tests/shadowing_local_variable.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/shadowing_local_variable.sol",
"filename_short": "tests/shadowing_local_variable.sol",
"lines": [
8,
9,
10,
11,
12,
13,
14
],
"starting_column": 1,
"ending_column": 2
}
} }
} }
} ]
] }
} ]
] }

@ -1,44 +1,48 @@
[ {
{ "success": true,
"check": "shadowing-state", "error": null,
"impact": "High", "results": [
"confidence": "High", {
"description": "DerivedContract.owner (tests/shadowing_state_variable.sol#12) shadows:\n\t- BaseContract.owner (tests/shadowing_state_variable.sol#2)\n", "check": "shadowing-state",
"elements": [ "impact": "High",
{ "confidence": "High",
"type": "variable", "description": "DerivedContract.owner (tests/shadowing_state_variable.sol#12) shadows:\n\t- BaseContract.owner (tests/shadowing_state_variable.sol#2)\n",
"name": "owner", "elements": [
"source_mapping": { {
"start": 172, "type": "variable",
"length": 13, "name": "owner",
"filename_used": "/home/travis/build/crytic/slither/tests/shadowing_state_variable.sol", "source_mapping": {
"filename_relative": "tests/shadowing_state_variable.sol", "start": 172,
"filename_absolute": "/home/travis/build/crytic/slither/tests/shadowing_state_variable.sol", "length": 13,
"filename_short": "tests/shadowing_state_variable.sol", "filename_used": "/home/travis/build/crytic/slither/tests/shadowing_state_variable.sol",
"lines": [ "filename_relative": "tests/shadowing_state_variable.sol",
12 "filename_absolute": "/home/travis/build/crytic/slither/tests/shadowing_state_variable.sol",
], "filename_short": "tests/shadowing_state_variable.sol",
"starting_column": 5, "lines": [
"ending_column": 18 12
],
"starting_column": 5,
"ending_column": 18
}
},
{
"type": "variable",
"name": "owner",
"source_mapping": {
"start": 27,
"length": 13,
"filename_used": "/home/travis/build/crytic/slither/tests/shadowing_state_variable.sol",
"filename_relative": "tests/shadowing_state_variable.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/shadowing_state_variable.sol",
"filename_short": "tests/shadowing_state_variable.sol",
"lines": [
2
],
"starting_column": 5,
"ending_column": 18
}
} }
}, ]
{ }
"type": "variable", ]
"name": "owner", }
"source_mapping": {
"start": 27,
"length": 13,
"filename_used": "/home/travis/build/crytic/slither/tests/shadowing_state_variable.sol",
"filename_relative": "tests/shadowing_state_variable.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/shadowing_state_variable.sol",
"filename_short": "tests/shadowing_state_variable.sol",
"lines": [
2
],
"starting_column": 5,
"ending_column": 18
}
}
]
}
]

@ -1,44 +1,48 @@
[ {
{ "success": true,
"check": "solc-version", "error": null,
"impact": "Informational", "results": [
"confidence": "High", {
"description": "Detected issues with version pragma in :\n\t- pragma solidity^0.4.23 (tests/solc_version_incorrect.sol#2): it allows old versions\n\t- pragma solidity>=0.4.0<0.6.0 (tests/solc_version_incorrect.sol#3): it allows old versions\n", "check": "solc-version",
"elements": [ "impact": "Informational",
{ "confidence": "High",
"type": "expression", "description": "Detected issues with version pragma in :\n\t- pragma solidity^0.4.23 (tests/solc_version_incorrect.sol#2): it allows old versions\n\t- pragma solidity>=0.4.0<0.6.0 (tests/solc_version_incorrect.sol#3): it allows old versions\n",
"expression": "^0.4.23", "elements": [
"source_mapping": { {
"start": 63, "type": "expression",
"length": 24, "expression": "^0.4.23",
"filename_used": "/home/travis/build/crytic/slither/tests/solc_version_incorrect.sol", "source_mapping": {
"filename_relative": "tests/solc_version_incorrect.sol", "start": 63,
"filename_absolute": "/home/travis/build/crytic/slither/tests/solc_version_incorrect.sol", "length": 24,
"filename_short": "tests/solc_version_incorrect.sol", "filename_used": "/home/travis/build/crytic/slither/tests/solc_version_incorrect.sol",
"lines": [ "filename_relative": "tests/solc_version_incorrect.sol",
2 "filename_absolute": "/home/travis/build/crytic/slither/tests/solc_version_incorrect.sol",
], "filename_short": "tests/solc_version_incorrect.sol",
"starting_column": 1, "lines": [
"ending_column": 25 2
],
"starting_column": 1,
"ending_column": 25
}
},
{
"type": "expression",
"expression": ">=0.4.0<0.6.0",
"source_mapping": {
"start": 89,
"length": 31,
"filename_used": "/home/travis/build/crytic/slither/tests/solc_version_incorrect.sol",
"filename_relative": "tests/solc_version_incorrect.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/solc_version_incorrect.sol",
"filename_short": "tests/solc_version_incorrect.sol",
"lines": [
3
],
"starting_column": 1,
"ending_column": 32
}
} }
}, ]
{ }
"type": "expression", ]
"expression": ">=0.4.0<0.6.0", }
"source_mapping": {
"start": 89,
"length": 31,
"filename_used": "/home/travis/build/crytic/slither/tests/solc_version_incorrect.sol",
"filename_relative": "tests/solc_version_incorrect.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/solc_version_incorrect.sol",
"filename_short": "tests/solc_version_incorrect.sol",
"lines": [
3
],
"starting_column": 1,
"ending_column": 32
}
}
]
}
]

@ -1,243 +1,247 @@
[ {
{ "success": true,
"check": "timestamp", "error": null,
"impact": "Low", "results": [
"confidence": "Medium", {
"description": "Timestamp.bad0 (tests/timestamp.sol#4-6) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- require(bool)(block.timestamp == 0) (tests/timestamp.sol#5)\n", "check": "timestamp",
"elements": [ "impact": "Low",
{ "confidence": "Medium",
"type": "function", "description": "Timestamp.bad0 (tests/timestamp.sol#4-6) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- require(bool)(block.timestamp == 0) (tests/timestamp.sol#5)\n",
"name": "bad0", "elements": [
"source_mapping": { {
"start": 47, "type": "function",
"length": 70, "name": "bad0",
"filename_used": "/home/travis/build/crytic/slither/tests/timestamp.sol",
"filename_relative": "tests/timestamp.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/timestamp.sol",
"filename_short": "tests/timestamp.sol",
"lines": [
4,
5,
6
],
"starting_column": 5,
"ending_column": 6
},
"contract": {
"type": "contract",
"name": "Timestamp",
"source_mapping": { "source_mapping": {
"start": 0, "start": 47,
"length": 402, "length": 70,
"filename_used": "/home/travis/build/crytic/slither/tests/timestamp.sol", "filename_used": "/home/travis/build/crytic/slither/tests/timestamp.sol",
"filename_relative": "tests/timestamp.sol", "filename_relative": "tests/timestamp.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/timestamp.sol", "filename_absolute": "/home/travis/build/crytic/slither/tests/timestamp.sol",
"filename_short": "tests/timestamp.sol", "filename_short": "tests/timestamp.sol",
"lines": [ "lines": [
1,
2,
3,
4, 4,
5, 5,
6, 6
7,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20
], ],
"starting_column": 1, "starting_column": 5,
"ending_column": 2 "ending_column": 6
},
"contract": {
"type": "contract",
"name": "Timestamp",
"source_mapping": {
"start": 0,
"length": 402,
"filename_used": "/home/travis/build/crytic/slither/tests/timestamp.sol",
"filename_relative": "tests/timestamp.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/timestamp.sol",
"filename_short": "tests/timestamp.sol",
"lines": [
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20
],
"starting_column": 1,
"ending_column": 2
}
} }
}
},
{
"type": "expression",
"expression": "require(bool)(block.timestamp == 0)",
"source_mapping": {
"start": 81,
"length": 29,
"filename_used": "/home/travis/build/crytic/slither/tests/timestamp.sol",
"filename_relative": "tests/timestamp.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/timestamp.sol",
"filename_short": "tests/timestamp.sol",
"lines": [
5
],
"starting_column": 9,
"ending_column": 38
}
}
]
},
{
"check": "timestamp",
"impact": "Low",
"confidence": "Medium",
"description": "Timestamp.bad1 (tests/timestamp.sol#8-11) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- require(bool)(time == 0) (tests/timestamp.sol#10)\n",
"elements": [
{
"type": "function",
"name": "bad1",
"source_mapping": {
"start": 126,
"length": 96,
"filename_used": "/home/travis/build/crytic/slither/tests/timestamp.sol",
"filename_relative": "tests/timestamp.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/timestamp.sol",
"filename_short": "tests/timestamp.sol",
"lines": [
8,
9,
10,
11
],
"starting_column": 5,
"ending_column": 6
}, },
"contract": { {
"type": "contract", "type": "expression",
"name": "Timestamp", "expression": "require(bool)(block.timestamp == 0)",
"source_mapping": { "source_mapping": {
"start": 0, "start": 81,
"length": 402, "length": 29,
"filename_used": "/home/travis/build/crytic/slither/tests/timestamp.sol", "filename_used": "/home/travis/build/crytic/slither/tests/timestamp.sol",
"filename_relative": "tests/timestamp.sol", "filename_relative": "tests/timestamp.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/timestamp.sol", "filename_absolute": "/home/travis/build/crytic/slither/tests/timestamp.sol",
"filename_short": "tests/timestamp.sol", "filename_short": "tests/timestamp.sol",
"lines": [ "lines": [
1, 5
2,
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20
], ],
"starting_column": 1, "starting_column": 9,
"ending_column": 2 "ending_column": 38
} }
} }
}, ]
{ },
"type": "expression", {
"expression": "require(bool)(time == 0)", "check": "timestamp",
"source_mapping": { "impact": "Low",
"start": 197, "confidence": "Medium",
"length": 18, "description": "Timestamp.bad1 (tests/timestamp.sol#8-11) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- require(bool)(time == 0) (tests/timestamp.sol#10)\n",
"filename_used": "/home/travis/build/crytic/slither/tests/timestamp.sol", "elements": [
"filename_relative": "tests/timestamp.sol", {
"filename_absolute": "/home/travis/build/crytic/slither/tests/timestamp.sol", "type": "function",
"filename_short": "tests/timestamp.sol", "name": "bad1",
"lines": [
10
],
"starting_column": 9,
"ending_column": 27
}
}
]
},
{
"check": "timestamp",
"impact": "Low",
"confidence": "Medium",
"description": "Timestamp.bad2 (tests/timestamp.sol#13-15) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- block.timestamp > 0 (tests/timestamp.sol#14)\n",
"elements": [
{
"type": "function",
"name": "bad2",
"source_mapping": {
"start": 231,
"length": 79,
"filename_used": "/home/travis/build/crytic/slither/tests/timestamp.sol",
"filename_relative": "tests/timestamp.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/timestamp.sol",
"filename_short": "tests/timestamp.sol",
"lines": [
13,
14,
15
],
"starting_column": 5,
"ending_column": 6
},
"contract": {
"type": "contract",
"name": "Timestamp",
"source_mapping": { "source_mapping": {
"start": 0, "start": 126,
"length": 402, "length": 96,
"filename_used": "/home/travis/build/crytic/slither/tests/timestamp.sol", "filename_used": "/home/travis/build/crytic/slither/tests/timestamp.sol",
"filename_relative": "tests/timestamp.sol", "filename_relative": "tests/timestamp.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/timestamp.sol", "filename_absolute": "/home/travis/build/crytic/slither/tests/timestamp.sol",
"filename_short": "tests/timestamp.sol", "filename_short": "tests/timestamp.sol",
"lines": [ "lines": [
1,
2,
3,
4,
5,
6,
7,
8, 8,
9, 9,
10, 10,
11, 11
12, ],
"starting_column": 5,
"ending_column": 6
},
"contract": {
"type": "contract",
"name": "Timestamp",
"source_mapping": {
"start": 0,
"length": 402,
"filename_used": "/home/travis/build/crytic/slither/tests/timestamp.sol",
"filename_relative": "tests/timestamp.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/timestamp.sol",
"filename_short": "tests/timestamp.sol",
"lines": [
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20
],
"starting_column": 1,
"ending_column": 2
}
}
},
{
"type": "expression",
"expression": "require(bool)(time == 0)",
"source_mapping": {
"start": 197,
"length": 18,
"filename_used": "/home/travis/build/crytic/slither/tests/timestamp.sol",
"filename_relative": "tests/timestamp.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/timestamp.sol",
"filename_short": "tests/timestamp.sol",
"lines": [
10
],
"starting_column": 9,
"ending_column": 27
}
}
]
},
{
"check": "timestamp",
"impact": "Low",
"confidence": "Medium",
"description": "Timestamp.bad2 (tests/timestamp.sol#13-15) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- block.timestamp > 0 (tests/timestamp.sol#14)\n",
"elements": [
{
"type": "function",
"name": "bad2",
"source_mapping": {
"start": 231,
"length": 79,
"filename_used": "/home/travis/build/crytic/slither/tests/timestamp.sol",
"filename_relative": "tests/timestamp.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/timestamp.sol",
"filename_short": "tests/timestamp.sol",
"lines": [
13, 13,
14, 14,
15, 15
16,
17,
18,
19,
20
], ],
"starting_column": 1, "starting_column": 5,
"ending_column": 2 "ending_column": 6
},
"contract": {
"type": "contract",
"name": "Timestamp",
"source_mapping": {
"start": 0,
"length": 402,
"filename_used": "/home/travis/build/crytic/slither/tests/timestamp.sol",
"filename_relative": "tests/timestamp.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/timestamp.sol",
"filename_short": "tests/timestamp.sol",
"lines": [
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20
],
"starting_column": 1,
"ending_column": 2
}
}
},
{
"type": "expression",
"expression": "block.timestamp > 0",
"source_mapping": {
"start": 279,
"length": 24,
"filename_used": "/home/travis/build/crytic/slither/tests/timestamp.sol",
"filename_relative": "tests/timestamp.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/timestamp.sol",
"filename_short": "tests/timestamp.sol",
"lines": [
14
],
"starting_column": 9,
"ending_column": 33
} }
} }
}, ]
{ }
"type": "expression", ]
"expression": "block.timestamp > 0", }
"source_mapping": {
"start": 279,
"length": 24,
"filename_used": "/home/travis/build/crytic/slither/tests/timestamp.sol",
"filename_relative": "tests/timestamp.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/timestamp.sol",
"filename_short": "tests/timestamp.sol",
"lines": [
14
],
"starting_column": 9,
"ending_column": 33
}
}
]
}
]

@ -1,196 +1,200 @@
[ {
{ "success": true,
"check": "too-many-digits", "error": null,
"impact": "Informational", "results": [
"confidence": "Medium", {
"description": "C.f (tests/too_many_digits.sol#9-15) uses literals with too many digits:\n\t- x1 = 0x000001\n\t- x2 = 0x0000000000001\n\t- x3 = 1000000000000000000\n\t- x4 = 100000\n\tUse the proper denomination (ether-unit, time-unit,or the scientific notation\n", "check": "too-many-digits",
"elements": [ "impact": "Informational",
{ "confidence": "Medium",
"type": "expression", "description": "C.f (tests/too_many_digits.sol#9-15) uses literals with too many digits:\n\t- x1 = 0x000001\n\t- x2 = 0x0000000000001\n\t- x3 = 1000000000000000000\n\t- x4 = 100000\n\tUse the proper denomination (ether-unit, time-unit,or the scientific notation\n",
"expression": "x1 = 0x000001", "elements": [
"source_mapping": { {
"start": 206, "type": "expression",
"length": 18, "expression": "x1 = 0x000001",
"filename_used": "/home/travis/build/crytic/slither/tests/too_many_digits.sol", "source_mapping": {
"filename_relative": "tests/too_many_digits.sol", "start": 206,
"filename_absolute": "/home/travis/build/crytic/slither/tests/too_many_digits.sol", "length": 18,
"filename_short": "tests/too_many_digits.sol", "filename_used": "/home/travis/build/crytic/slither/tests/too_many_digits.sol",
"lines": [ "filename_relative": "tests/too_many_digits.sol",
10 "filename_absolute": "/home/travis/build/crytic/slither/tests/too_many_digits.sol",
], "filename_short": "tests/too_many_digits.sol",
"starting_column": 9, "lines": [
"ending_column": 27 10
],
"starting_column": 9,
"ending_column": 27
}
},
{
"type": "expression",
"expression": "x2 = 0x0000000000001",
"source_mapping": {
"start": 234,
"length": 25,
"filename_used": "/home/travis/build/crytic/slither/tests/too_many_digits.sol",
"filename_relative": "tests/too_many_digits.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/too_many_digits.sol",
"filename_short": "tests/too_many_digits.sol",
"lines": [
11
],
"starting_column": 9,
"ending_column": 34
}
},
{
"type": "expression",
"expression": "x3 = 1000000000000000000",
"source_mapping": {
"start": 269,
"length": 29,
"filename_used": "/home/travis/build/crytic/slither/tests/too_many_digits.sol",
"filename_relative": "tests/too_many_digits.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/too_many_digits.sol",
"filename_short": "tests/too_many_digits.sol",
"lines": [
12
],
"starting_column": 9,
"ending_column": 38
}
},
{
"type": "expression",
"expression": "x4 = 100000",
"source_mapping": {
"start": 308,
"length": 16,
"filename_used": "/home/travis/build/crytic/slither/tests/too_many_digits.sol",
"filename_relative": "tests/too_many_digits.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/too_many_digits.sol",
"filename_short": "tests/too_many_digits.sol",
"lines": [
13
],
"starting_column": 9,
"ending_column": 25
}
} }
}, ]
{ },
"type": "expression", {
"expression": "x2 = 0x0000000000001", "check": "too-many-digits",
"source_mapping": { "impact": "Informational",
"start": 234, "confidence": "Medium",
"length": 25, "description": "C.h (tests/too_many_digits.sol#20-24) uses literals with too many digits:\n\t- x2 = 100000\n\tUse the proper denomination (ether-unit, time-unit,or the scientific notation\n",
"filename_used": "/home/travis/build/crytic/slither/tests/too_many_digits.sol", "elements": [
"filename_relative": "tests/too_many_digits.sol", {
"filename_absolute": "/home/travis/build/crytic/slither/tests/too_many_digits.sol", "type": "expression",
"filename_short": "tests/too_many_digits.sol", "expression": "x2 = 100000",
"lines": [ "source_mapping": {
11 "start": 509,
], "length": 16,
"starting_column": 9, "filename_used": "/home/travis/build/crytic/slither/tests/too_many_digits.sol",
"ending_column": 34 "filename_relative": "tests/too_many_digits.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/too_many_digits.sol",
"filename_short": "tests/too_many_digits.sol",
"lines": [
22
],
"starting_column": 9,
"ending_column": 25
}
} }
}, ]
{ },
"type": "expression", {
"expression": "x3 = 1000000000000000000", "check": "too-many-digits",
"source_mapping": { "impact": "Informational",
"start": 269, "confidence": "Medium",
"length": 29, "description": "C.i (tests/too_many_digits.sol#29-33) uses literals with too many digits:\n\t- x2 = 1000000000000 + 10000000000000 + 100000000000000 + 1000000000000000 + 10000000000000000\n\t- x2 = 1000000000000 + 10000000000000 + 100000000000000 + 1000000000000000 + 10000000000000000\n\t- x2 = 1000000000000 + 10000000000000 + 100000000000000 + 1000000000000000 + 10000000000000000\n\t- x2 = 1000000000000 + 10000000000000 + 100000000000000 + 1000000000000000 + 10000000000000000\n\t- x2 = 1000000000000 + 10000000000000 + 100000000000000 + 1000000000000000 + 10000000000000000\n\tUse the proper denomination (ether-unit, time-unit,or the scientific notation\n",
"filename_used": "/home/travis/build/crytic/slither/tests/too_many_digits.sol", "elements": [
"filename_relative": "tests/too_many_digits.sol", {
"filename_absolute": "/home/travis/build/crytic/slither/tests/too_many_digits.sol", "type": "expression",
"filename_short": "tests/too_many_digits.sol", "expression": "x2 = 1000000000000 + 10000000000000 + 100000000000000 + 1000000000000000 + 10000000000000000",
"lines": [ "source_mapping": {
12 "start": 749,
], "length": 67,
"starting_column": 9, "filename_used": "/home/travis/build/crytic/slither/tests/too_many_digits.sol",
"ending_column": 38 "filename_relative": "tests/too_many_digits.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/too_many_digits.sol",
"filename_short": "tests/too_many_digits.sol",
"lines": [
31
],
"starting_column": 9,
"ending_column": 76
}
},
{
"type": "expression",
"expression": "x2 = 1000000000000 + 10000000000000 + 100000000000000 + 1000000000000000 + 10000000000000000",
"source_mapping": {
"start": 749,
"length": 67,
"filename_used": "/home/travis/build/crytic/slither/tests/too_many_digits.sol",
"filename_relative": "tests/too_many_digits.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/too_many_digits.sol",
"filename_short": "tests/too_many_digits.sol",
"lines": [
31
],
"starting_column": 9,
"ending_column": 76
}
},
{
"type": "expression",
"expression": "x2 = 1000000000000 + 10000000000000 + 100000000000000 + 1000000000000000 + 10000000000000000",
"source_mapping": {
"start": 749,
"length": 67,
"filename_used": "/home/travis/build/crytic/slither/tests/too_many_digits.sol",
"filename_relative": "tests/too_many_digits.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/too_many_digits.sol",
"filename_short": "tests/too_many_digits.sol",
"lines": [
31
],
"starting_column": 9,
"ending_column": 76
}
},
{
"type": "expression",
"expression": "x2 = 1000000000000 + 10000000000000 + 100000000000000 + 1000000000000000 + 10000000000000000",
"source_mapping": {
"start": 749,
"length": 67,
"filename_used": "/home/travis/build/crytic/slither/tests/too_many_digits.sol",
"filename_relative": "tests/too_many_digits.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/too_many_digits.sol",
"filename_short": "tests/too_many_digits.sol",
"lines": [
31
],
"starting_column": 9,
"ending_column": 76
}
},
{
"type": "expression",
"expression": "x2 = 1000000000000 + 10000000000000 + 100000000000000 + 1000000000000000 + 10000000000000000",
"source_mapping": {
"start": 749,
"length": 67,
"filename_used": "/home/travis/build/crytic/slither/tests/too_many_digits.sol",
"filename_relative": "tests/too_many_digits.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/too_many_digits.sol",
"filename_short": "tests/too_many_digits.sol",
"lines": [
31
],
"starting_column": 9,
"ending_column": 76
}
} }
}, ]
{ }
"type": "expression", ]
"expression": "x4 = 100000", }
"source_mapping": {
"start": 308,
"length": 16,
"filename_used": "/home/travis/build/crytic/slither/tests/too_many_digits.sol",
"filename_relative": "tests/too_many_digits.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/too_many_digits.sol",
"filename_short": "tests/too_many_digits.sol",
"lines": [
13
],
"starting_column": 9,
"ending_column": 25
}
}
]
},
{
"check": "too-many-digits",
"impact": "Informational",
"confidence": "Medium",
"description": "C.h (tests/too_many_digits.sol#20-24) uses literals with too many digits:\n\t- x2 = 100000\n\tUse the proper denomination (ether-unit, time-unit,or the scientific notation\n",
"elements": [
{
"type": "expression",
"expression": "x2 = 100000",
"source_mapping": {
"start": 509,
"length": 16,
"filename_used": "/home/travis/build/crytic/slither/tests/too_many_digits.sol",
"filename_relative": "tests/too_many_digits.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/too_many_digits.sol",
"filename_short": "tests/too_many_digits.sol",
"lines": [
22
],
"starting_column": 9,
"ending_column": 25
}
}
]
},
{
"check": "too-many-digits",
"impact": "Informational",
"confidence": "Medium",
"description": "C.i (tests/too_many_digits.sol#29-33) uses literals with too many digits:\n\t- x2 = 1000000000000 + 10000000000000 + 100000000000000 + 1000000000000000 + 10000000000000000\n\t- x2 = 1000000000000 + 10000000000000 + 100000000000000 + 1000000000000000 + 10000000000000000\n\t- x2 = 1000000000000 + 10000000000000 + 100000000000000 + 1000000000000000 + 10000000000000000\n\t- x2 = 1000000000000 + 10000000000000 + 100000000000000 + 1000000000000000 + 10000000000000000\n\t- x2 = 1000000000000 + 10000000000000 + 100000000000000 + 1000000000000000 + 10000000000000000\n\tUse the proper denomination (ether-unit, time-unit,or the scientific notation\n",
"elements": [
{
"type": "expression",
"expression": "x2 = 1000000000000 + 10000000000000 + 100000000000000 + 1000000000000000 + 10000000000000000",
"source_mapping": {
"start": 749,
"length": 67,
"filename_used": "/home/travis/build/crytic/slither/tests/too_many_digits.sol",
"filename_relative": "tests/too_many_digits.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/too_many_digits.sol",
"filename_short": "tests/too_many_digits.sol",
"lines": [
31
],
"starting_column": 9,
"ending_column": 76
}
},
{
"type": "expression",
"expression": "x2 = 1000000000000 + 10000000000000 + 100000000000000 + 1000000000000000 + 10000000000000000",
"source_mapping": {
"start": 749,
"length": 67,
"filename_used": "/home/travis/build/crytic/slither/tests/too_many_digits.sol",
"filename_relative": "tests/too_many_digits.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/too_many_digits.sol",
"filename_short": "tests/too_many_digits.sol",
"lines": [
31
],
"starting_column": 9,
"ending_column": 76
}
},
{
"type": "expression",
"expression": "x2 = 1000000000000 + 10000000000000 + 100000000000000 + 1000000000000000 + 10000000000000000",
"source_mapping": {
"start": 749,
"length": 67,
"filename_used": "/home/travis/build/crytic/slither/tests/too_many_digits.sol",
"filename_relative": "tests/too_many_digits.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/too_many_digits.sol",
"filename_short": "tests/too_many_digits.sol",
"lines": [
31
],
"starting_column": 9,
"ending_column": 76
}
},
{
"type": "expression",
"expression": "x2 = 1000000000000 + 10000000000000 + 100000000000000 + 1000000000000000 + 10000000000000000",
"source_mapping": {
"start": 749,
"length": 67,
"filename_used": "/home/travis/build/crytic/slither/tests/too_many_digits.sol",
"filename_relative": "tests/too_many_digits.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/too_many_digits.sol",
"filename_short": "tests/too_many_digits.sol",
"lines": [
31
],
"starting_column": 9,
"ending_column": 76
}
},
{
"type": "expression",
"expression": "x2 = 1000000000000 + 10000000000000 + 100000000000000 + 1000000000000000 + 10000000000000000",
"source_mapping": {
"start": 749,
"length": 67,
"filename_used": "/home/travis/build/crytic/slither/tests/too_many_digits.sol",
"filename_relative": "tests/too_many_digits.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/too_many_digits.sol",
"filename_short": "tests/too_many_digits.sol",
"lines": [
31
],
"starting_column": 9,
"ending_column": 76
}
}
]
}
]

@ -1,174 +1,178 @@
[ {
{ "success": true,
"check": "tx-origin", "error": null,
"impact": "Medium", "results": [
"confidence": "Medium", {
"description": "TxOrigin.bug0 uses tx.origin for authorization:\n\t- require(bool)(tx.origin == owner) (tests/tx_origin-0.5.1.sol#10)\n", "check": "tx-origin",
"elements": [ "impact": "Medium",
{ "confidence": "Medium",
"type": "function", "description": "TxOrigin.bug0 uses tx.origin for authorization:\n\t- require(bool)(tx.origin == owner) (tests/tx_origin-0.5.1.sol#10)\n",
"name": "bug0", "elements": [
"source_mapping": { {
"start": 127, "type": "function",
"length": 66, "name": "bug0",
"filename_used": "/home/travis/build/crytic/slither/tests/tx_origin-0.5.1.sol",
"filename_relative": "tests/tx_origin-0.5.1.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/tx_origin-0.5.1.sol",
"filename_short": "tests/tx_origin-0.5.1.sol",
"lines": [
9,
10,
11
],
"starting_column": 5,
"ending_column": 6
},
"contract": {
"type": "contract",
"name": "TxOrigin",
"source_mapping": { "source_mapping": {
"start": 25, "start": 127,
"length": 442, "length": 66,
"filename_used": "/home/travis/build/crytic/slither/tests/tx_origin-0.5.1.sol", "filename_used": "/home/travis/build/crytic/slither/tests/tx_origin-0.5.1.sol",
"filename_relative": "tests/tx_origin-0.5.1.sol", "filename_relative": "tests/tx_origin-0.5.1.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/tx_origin-0.5.1.sol", "filename_absolute": "/home/travis/build/crytic/slither/tests/tx_origin-0.5.1.sol",
"filename_short": "tests/tx_origin-0.5.1.sol", "filename_short": "tests/tx_origin-0.5.1.sol",
"lines": [ "lines": [
3,
4,
5,
6,
7,
8,
9, 9,
10, 10,
11, 11
12, ],
"starting_column": 5,
"ending_column": 6
},
"contract": {
"type": "contract",
"name": "TxOrigin",
"source_mapping": {
"start": 25,
"length": 442,
"filename_used": "/home/travis/build/crytic/slither/tests/tx_origin-0.5.1.sol",
"filename_relative": "tests/tx_origin-0.5.1.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/tx_origin-0.5.1.sol",
"filename_short": "tests/tx_origin-0.5.1.sol",
"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
],
"starting_column": 1,
"ending_column": 2
}
}
},
{
"type": "expression",
"expression": "require(bool)(tx.origin == owner)",
"source_mapping": {
"start": 159,
"length": 27,
"filename_used": "/home/travis/build/crytic/slither/tests/tx_origin-0.5.1.sol",
"filename_relative": "tests/tx_origin-0.5.1.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/tx_origin-0.5.1.sol",
"filename_short": "tests/tx_origin-0.5.1.sol",
"lines": [
10
],
"starting_column": 9,
"ending_column": 36
}
}
]
},
{
"check": "tx-origin",
"impact": "Medium",
"confidence": "Medium",
"description": "TxOrigin.bug2 uses tx.origin for authorization:\n\t- tx.origin != owner (tests/tx_origin-0.5.1.sol#14-16)\n",
"elements": [
{
"type": "function",
"name": "bug2",
"source_mapping": {
"start": 199,
"length": 95,
"filename_used": "/home/travis/build/crytic/slither/tests/tx_origin-0.5.1.sol",
"filename_relative": "tests/tx_origin-0.5.1.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/tx_origin-0.5.1.sol",
"filename_short": "tests/tx_origin-0.5.1.sol",
"lines": [
13, 13,
14, 14,
15, 15,
16, 16,
17, 17
18,
19,
20,
21,
22,
23,
24,
25,
26
], ],
"starting_column": 1, "starting_column": 5,
"ending_column": 2 "ending_column": 6
},
"contract": {
"type": "contract",
"name": "TxOrigin",
"source_mapping": {
"start": 25,
"length": 442,
"filename_used": "/home/travis/build/crytic/slither/tests/tx_origin-0.5.1.sol",
"filename_relative": "tests/tx_origin-0.5.1.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/tx_origin-0.5.1.sol",
"filename_short": "tests/tx_origin-0.5.1.sol",
"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
],
"starting_column": 1,
"ending_column": 2
}
} }
}
},
{
"type": "expression",
"expression": "require(bool)(tx.origin == owner)",
"source_mapping": {
"start": 159,
"length": 27,
"filename_used": "/home/travis/build/crytic/slither/tests/tx_origin-0.5.1.sol",
"filename_relative": "tests/tx_origin-0.5.1.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/tx_origin-0.5.1.sol",
"filename_short": "tests/tx_origin-0.5.1.sol",
"lines": [
10
],
"starting_column": 9,
"ending_column": 36
}
}
]
},
{
"check": "tx-origin",
"impact": "Medium",
"confidence": "Medium",
"description": "TxOrigin.bug2 uses tx.origin for authorization:\n\t- tx.origin != owner (tests/tx_origin-0.5.1.sol#14-16)\n",
"elements": [
{
"type": "function",
"name": "bug2",
"source_mapping": {
"start": 199,
"length": 95,
"filename_used": "/home/travis/build/crytic/slither/tests/tx_origin-0.5.1.sol",
"filename_relative": "tests/tx_origin-0.5.1.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/tx_origin-0.5.1.sol",
"filename_short": "tests/tx_origin-0.5.1.sol",
"lines": [
13,
14,
15,
16,
17
],
"starting_column": 5,
"ending_column": 6
}, },
"contract": { {
"type": "contract", "type": "expression",
"name": "TxOrigin", "expression": "tx.origin != owner",
"source_mapping": { "source_mapping": {
"start": 25, "start": 231,
"length": 442, "length": 57,
"filename_used": "/home/travis/build/crytic/slither/tests/tx_origin-0.5.1.sol", "filename_used": "/home/travis/build/crytic/slither/tests/tx_origin-0.5.1.sol",
"filename_relative": "tests/tx_origin-0.5.1.sol", "filename_relative": "tests/tx_origin-0.5.1.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/tx_origin-0.5.1.sol", "filename_absolute": "/home/travis/build/crytic/slither/tests/tx_origin-0.5.1.sol",
"filename_short": "tests/tx_origin-0.5.1.sol", "filename_short": "tests/tx_origin-0.5.1.sol",
"lines": [ "lines": [
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14, 14,
15, 15,
16, 16
17,
18,
19,
20,
21,
22,
23,
24,
25,
26
], ],
"starting_column": 1, "starting_column": 9,
"ending_column": 2 "ending_column": 10
} }
} }
}, ]
{ }
"type": "expression", ]
"expression": "tx.origin != owner", }
"source_mapping": {
"start": 231,
"length": 57,
"filename_used": "/home/travis/build/crytic/slither/tests/tx_origin-0.5.1.sol",
"filename_relative": "tests/tx_origin-0.5.1.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/tx_origin-0.5.1.sol",
"filename_short": "tests/tx_origin-0.5.1.sol",
"lines": [
14,
15,
16
],
"starting_column": 9,
"ending_column": 10
}
}
]
}
]

@ -1,174 +1,178 @@
[ {
{ "success": true,
"check": "tx-origin", "error": null,
"impact": "Medium", "results": [
"confidence": "Medium", {
"description": "TxOrigin.bug0 uses tx.origin for authorization:\n\t- require(bool)(tx.origin == owner) (tests/tx_origin.sol#10)\n", "check": "tx-origin",
"elements": [ "impact": "Medium",
{ "confidence": "Medium",
"type": "function", "description": "TxOrigin.bug0 uses tx.origin for authorization:\n\t- require(bool)(tx.origin == owner) (tests/tx_origin.sol#10)\n",
"name": "bug0", "elements": [
"source_mapping": { {
"start": 116, "type": "function",
"length": 60, "name": "bug0",
"filename_used": "/home/travis/build/crytic/slither/tests/tx_origin.sol",
"filename_relative": "tests/tx_origin.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/tx_origin.sol",
"filename_short": "tests/tx_origin.sol",
"lines": [
9,
10,
11
],
"starting_column": 5,
"ending_column": 6
},
"contract": {
"type": "contract",
"name": "TxOrigin",
"source_mapping": { "source_mapping": {
"start": 28, "start": 116,
"length": 393, "length": 60,
"filename_used": "/home/travis/build/crytic/slither/tests/tx_origin.sol", "filename_used": "/home/travis/build/crytic/slither/tests/tx_origin.sol",
"filename_relative": "tests/tx_origin.sol", "filename_relative": "tests/tx_origin.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/tx_origin.sol", "filename_absolute": "/home/travis/build/crytic/slither/tests/tx_origin.sol",
"filename_short": "tests/tx_origin.sol", "filename_short": "tests/tx_origin.sol",
"lines": [ "lines": [
3,
4,
5,
6,
7,
8,
9, 9,
10, 10,
11, 11
12, ],
"starting_column": 5,
"ending_column": 6
},
"contract": {
"type": "contract",
"name": "TxOrigin",
"source_mapping": {
"start": 28,
"length": 393,
"filename_used": "/home/travis/build/crytic/slither/tests/tx_origin.sol",
"filename_relative": "tests/tx_origin.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/tx_origin.sol",
"filename_short": "tests/tx_origin.sol",
"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
],
"starting_column": 1,
"ending_column": 2
}
}
},
{
"type": "expression",
"expression": "require(bool)(tx.origin == owner)",
"source_mapping": {
"start": 142,
"length": 27,
"filename_used": "/home/travis/build/crytic/slither/tests/tx_origin.sol",
"filename_relative": "tests/tx_origin.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/tx_origin.sol",
"filename_short": "tests/tx_origin.sol",
"lines": [
10
],
"starting_column": 9,
"ending_column": 36
}
}
]
},
{
"check": "tx-origin",
"impact": "Medium",
"confidence": "Medium",
"description": "TxOrigin.bug2 uses tx.origin for authorization:\n\t- tx.origin != owner (tests/tx_origin.sol#14-16)\n",
"elements": [
{
"type": "function",
"name": "bug2",
"source_mapping": {
"start": 182,
"length": 89,
"filename_used": "/home/travis/build/crytic/slither/tests/tx_origin.sol",
"filename_relative": "tests/tx_origin.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/tx_origin.sol",
"filename_short": "tests/tx_origin.sol",
"lines": [
13, 13,
14, 14,
15, 15,
16, 16,
17, 17
18,
19,
20,
21,
22,
23,
24,
25,
26
], ],
"starting_column": 1, "starting_column": 5,
"ending_column": 2 "ending_column": 6
},
"contract": {
"type": "contract",
"name": "TxOrigin",
"source_mapping": {
"start": 28,
"length": 393,
"filename_used": "/home/travis/build/crytic/slither/tests/tx_origin.sol",
"filename_relative": "tests/tx_origin.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/tx_origin.sol",
"filename_short": "tests/tx_origin.sol",
"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
],
"starting_column": 1,
"ending_column": 2
}
} }
}
},
{
"type": "expression",
"expression": "require(bool)(tx.origin == owner)",
"source_mapping": {
"start": 142,
"length": 27,
"filename_used": "/home/travis/build/crytic/slither/tests/tx_origin.sol",
"filename_relative": "tests/tx_origin.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/tx_origin.sol",
"filename_short": "tests/tx_origin.sol",
"lines": [
10
],
"starting_column": 9,
"ending_column": 36
}
}
]
},
{
"check": "tx-origin",
"impact": "Medium",
"confidence": "Medium",
"description": "TxOrigin.bug2 uses tx.origin for authorization:\n\t- tx.origin != owner (tests/tx_origin.sol#14-16)\n",
"elements": [
{
"type": "function",
"name": "bug2",
"source_mapping": {
"start": 182,
"length": 89,
"filename_used": "/home/travis/build/crytic/slither/tests/tx_origin.sol",
"filename_relative": "tests/tx_origin.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/tx_origin.sol",
"filename_short": "tests/tx_origin.sol",
"lines": [
13,
14,
15,
16,
17
],
"starting_column": 5,
"ending_column": 6
}, },
"contract": { {
"type": "contract", "type": "expression",
"name": "TxOrigin", "expression": "tx.origin != owner",
"source_mapping": { "source_mapping": {
"start": 28, "start": 208,
"length": 393, "length": 57,
"filename_used": "/home/travis/build/crytic/slither/tests/tx_origin.sol", "filename_used": "/home/travis/build/crytic/slither/tests/tx_origin.sol",
"filename_relative": "tests/tx_origin.sol", "filename_relative": "tests/tx_origin.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/tx_origin.sol", "filename_absolute": "/home/travis/build/crytic/slither/tests/tx_origin.sol",
"filename_short": "tests/tx_origin.sol", "filename_short": "tests/tx_origin.sol",
"lines": [ "lines": [
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14, 14,
15, 15,
16, 16
17,
18,
19,
20,
21,
22,
23,
24,
25,
26
], ],
"starting_column": 1, "starting_column": 9,
"ending_column": 2 "ending_column": 10
} }
} }
}, ]
{ }
"type": "expression", ]
"expression": "tx.origin != owner", }
"source_mapping": {
"start": 208,
"length": 57,
"filename_used": "/home/travis/build/crytic/slither/tests/tx_origin.sol",
"filename_relative": "tests/tx_origin.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/tx_origin.sol",
"filename_short": "tests/tx_origin.sol",
"lines": [
14,
15,
16
],
"starting_column": 9,
"ending_column": 10
}
}
]
}
]

@ -1,301 +1,305 @@
[ {
{ "success": true,
"check": "uninitialized-state", "error": null,
"impact": "High", "results": [
"confidence": "High", {
"description": "Uninitialized.destination (tests/uninitialized-0.5.1.sol#5) is never initialized. It is used in:\n\t- transfer (tests/uninitialized-0.5.1.sol#7-9)\n", "check": "uninitialized-state",
"elements": [ "impact": "High",
{ "confidence": "High",
"type": "variable", "description": "Uninitialized.destination (tests/uninitialized-0.5.1.sol#5) is never initialized. It is used in:\n\t- transfer (tests/uninitialized-0.5.1.sol#7-9)\n",
"name": "destination", "elements": [
"source_mapping": { {
"start": 54, "type": "variable",
"length": 27, "name": "destination",
"filename_used": "/home/travis/build/crytic/slither/tests/uninitialized-0.5.1.sol", "source_mapping": {
"filename_relative": "tests/uninitialized-0.5.1.sol", "start": 54,
"filename_absolute": "/home/travis/build/crytic/slither/tests/uninitialized-0.5.1.sol", "length": 27,
"filename_short": "tests/uninitialized-0.5.1.sol", "filename_used": "/home/travis/build/crytic/slither/tests/uninitialized-0.5.1.sol",
"lines": [ "filename_relative": "tests/uninitialized-0.5.1.sol",
5 "filename_absolute": "/home/travis/build/crytic/slither/tests/uninitialized-0.5.1.sol",
], "filename_short": "tests/uninitialized-0.5.1.sol",
"starting_column": 5, "lines": [
"ending_column": 32 5
} ],
}, "starting_column": 5,
{ "ending_column": 32
"type": "function", }
"name": "transfer",
"source_mapping": {
"start": 88,
"length": 82,
"filename_used": "/home/travis/build/crytic/slither/tests/uninitialized-0.5.1.sol",
"filename_relative": "tests/uninitialized-0.5.1.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/uninitialized-0.5.1.sol",
"filename_short": "tests/uninitialized-0.5.1.sol",
"lines": [
7,
8,
9
],
"starting_column": 5,
"ending_column": 6
}, },
"contract": { {
"type": "contract", "type": "function",
"name": "Uninitialized", "name": "transfer",
"source_mapping": { "source_mapping": {
"start": 25, "start": 88,
"length": 148, "length": 82,
"filename_used": "/home/travis/build/crytic/slither/tests/uninitialized-0.5.1.sol", "filename_used": "/home/travis/build/crytic/slither/tests/uninitialized-0.5.1.sol",
"filename_relative": "tests/uninitialized-0.5.1.sol", "filename_relative": "tests/uninitialized-0.5.1.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/uninitialized-0.5.1.sol", "filename_absolute": "/home/travis/build/crytic/slither/tests/uninitialized-0.5.1.sol",
"filename_short": "tests/uninitialized-0.5.1.sol", "filename_short": "tests/uninitialized-0.5.1.sol",
"lines": [ "lines": [
3,
4,
5,
6,
7, 7,
8, 8,
9, 9
10,
11
], ],
"starting_column": 1, "starting_column": 5,
"ending_column": 2 "ending_column": 6
},
"contract": {
"type": "contract",
"name": "Uninitialized",
"source_mapping": {
"start": 25,
"length": 148,
"filename_used": "/home/travis/build/crytic/slither/tests/uninitialized-0.5.1.sol",
"filename_relative": "tests/uninitialized-0.5.1.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/uninitialized-0.5.1.sol",
"filename_short": "tests/uninitialized-0.5.1.sol",
"lines": [
3,
4,
5,
6,
7,
8,
9,
10,
11
],
"starting_column": 1,
"ending_column": 2
}
} }
} }
} ]
] },
}, {
{ "check": "uninitialized-state",
"check": "uninitialized-state", "impact": "High",
"impact": "High", "confidence": "High",
"confidence": "High", "description": "Test.balances (tests/uninitialized-0.5.1.sol#15) is never initialized. It is used in:\n\t- use (tests/uninitialized-0.5.1.sol#23-26)\n",
"description": "Test.balances (tests/uninitialized-0.5.1.sol#15) is never initialized. It is used in:\n\t- use (tests/uninitialized-0.5.1.sol#23-26)\n", "elements": [
"elements": [ {
{ "type": "variable",
"type": "variable", "name": "balances",
"name": "balances", "source_mapping": {
"source_mapping": { "start": 196,
"start": 196, "length": 34,
"length": 34, "filename_used": "/home/travis/build/crytic/slither/tests/uninitialized-0.5.1.sol",
"filename_used": "/home/travis/build/crytic/slither/tests/uninitialized-0.5.1.sol", "filename_relative": "tests/uninitialized-0.5.1.sol",
"filename_relative": "tests/uninitialized-0.5.1.sol", "filename_absolute": "/home/travis/build/crytic/slither/tests/uninitialized-0.5.1.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/uninitialized-0.5.1.sol", "filename_short": "tests/uninitialized-0.5.1.sol",
"filename_short": "tests/uninitialized-0.5.1.sol", "lines": [
"lines": [ 15
15 ],
], "starting_column": 5,
"starting_column": 5, "ending_column": 39
"ending_column": 39 }
}
},
{
"type": "function",
"name": "use",
"source_mapping": {
"start": 369,
"length": 154,
"filename_used": "/home/travis/build/crytic/slither/tests/uninitialized-0.5.1.sol",
"filename_relative": "tests/uninitialized-0.5.1.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/uninitialized-0.5.1.sol",
"filename_short": "tests/uninitialized-0.5.1.sol",
"lines": [
23,
24,
25,
26
],
"starting_column": 5,
"ending_column": 6
}, },
"contract": { {
"type": "contract", "type": "function",
"name": "Test", "name": "use",
"source_mapping": { "source_mapping": {
"start": 176, "start": 369,
"length": 349, "length": 154,
"filename_used": "/home/travis/build/crytic/slither/tests/uninitialized-0.5.1.sol", "filename_used": "/home/travis/build/crytic/slither/tests/uninitialized-0.5.1.sol",
"filename_relative": "tests/uninitialized-0.5.1.sol", "filename_relative": "tests/uninitialized-0.5.1.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/uninitialized-0.5.1.sol", "filename_absolute": "/home/travis/build/crytic/slither/tests/uninitialized-0.5.1.sol",
"filename_short": "tests/uninitialized-0.5.1.sol", "filename_short": "tests/uninitialized-0.5.1.sol",
"lines": [ "lines": [
14,
15,
16,
17,
18,
19,
20,
21,
22,
23, 23,
24, 24,
25, 25,
26, 26
27
], ],
"starting_column": 1, "starting_column": 5,
"ending_column": 2 "ending_column": 6
},
"contract": {
"type": "contract",
"name": "Test",
"source_mapping": {
"start": 176,
"length": 349,
"filename_used": "/home/travis/build/crytic/slither/tests/uninitialized-0.5.1.sol",
"filename_relative": "tests/uninitialized-0.5.1.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/uninitialized-0.5.1.sol",
"filename_short": "tests/uninitialized-0.5.1.sol",
"lines": [
14,
15,
16,
17,
18,
19,
20,
21,
22,
23,
24,
25,
26,
27
],
"starting_column": 1,
"ending_column": 2
}
} }
} }
} ]
] },
}, {
{ "check": "uninitialized-state",
"check": "uninitialized-state", "impact": "High",
"impact": "High", "confidence": "High",
"confidence": "High", "description": "Test2.st (tests/uninitialized-0.5.1.sol#45) is never initialized. It is used in:\n\t- use (tests/uninitialized-0.5.1.sol#53-56)\n",
"description": "Test2.st (tests/uninitialized-0.5.1.sol#45) is never initialized. It is used in:\n\t- use (tests/uninitialized-0.5.1.sol#53-56)\n", "elements": [
"elements": [ {
{ "type": "variable",
"type": "variable", "name": "st",
"name": "st", "source_mapping": {
"source_mapping": { "start": 726,
"start": 726, "length": 15,
"length": 15, "filename_used": "/home/travis/build/crytic/slither/tests/uninitialized-0.5.1.sol",
"filename_used": "/home/travis/build/crytic/slither/tests/uninitialized-0.5.1.sol", "filename_relative": "tests/uninitialized-0.5.1.sol",
"filename_relative": "tests/uninitialized-0.5.1.sol", "filename_absolute": "/home/travis/build/crytic/slither/tests/uninitialized-0.5.1.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/uninitialized-0.5.1.sol", "filename_short": "tests/uninitialized-0.5.1.sol",
"filename_short": "tests/uninitialized-0.5.1.sol", "lines": [
"lines": [ 45
45 ],
], "starting_column": 5,
"starting_column": 5, "ending_column": 20
"ending_column": 20 }
}
},
{
"type": "function",
"name": "use",
"source_mapping": {
"start": 913,
"length": 129,
"filename_used": "/home/travis/build/crytic/slither/tests/uninitialized-0.5.1.sol",
"filename_relative": "tests/uninitialized-0.5.1.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/uninitialized-0.5.1.sol",
"filename_short": "tests/uninitialized-0.5.1.sol",
"lines": [
53,
54,
55,
56
],
"starting_column": 5,
"ending_column": 6
}, },
"contract": { {
"type": "contract", "type": "function",
"name": "Test2", "name": "use",
"source_mapping": { "source_mapping": {
"start": 672, "start": 913,
"length": 373, "length": 129,
"filename_used": "/home/travis/build/crytic/slither/tests/uninitialized-0.5.1.sol", "filename_used": "/home/travis/build/crytic/slither/tests/uninitialized-0.5.1.sol",
"filename_relative": "tests/uninitialized-0.5.1.sol", "filename_relative": "tests/uninitialized-0.5.1.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/uninitialized-0.5.1.sol", "filename_absolute": "/home/travis/build/crytic/slither/tests/uninitialized-0.5.1.sol",
"filename_short": "tests/uninitialized-0.5.1.sol", "filename_short": "tests/uninitialized-0.5.1.sol",
"lines": [ "lines": [
42,
43,
44,
45,
46,
47,
48,
49,
50,
51,
52,
53, 53,
54, 54,
55, 55,
56, 56
57,
58
], ],
"starting_column": 1, "starting_column": 5,
"ending_column": 2 "ending_column": 6
},
"contract": {
"type": "contract",
"name": "Test2",
"source_mapping": {
"start": 672,
"length": 373,
"filename_used": "/home/travis/build/crytic/slither/tests/uninitialized-0.5.1.sol",
"filename_relative": "tests/uninitialized-0.5.1.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/uninitialized-0.5.1.sol",
"filename_short": "tests/uninitialized-0.5.1.sol",
"lines": [
42,
43,
44,
45,
46,
47,
48,
49,
50,
51,
52,
53,
54,
55,
56,
57,
58
],
"starting_column": 1,
"ending_column": 2
}
} }
} }
} ]
] },
}, {
{ "check": "uninitialized-state",
"check": "uninitialized-state", "impact": "High",
"impact": "High", "confidence": "High",
"confidence": "High", "description": "Test2.v (tests/uninitialized-0.5.1.sol#47) is never initialized. It is used in:\n\t- init (tests/uninitialized-0.5.1.sol#49-51)\n",
"description": "Test2.v (tests/uninitialized-0.5.1.sol#47) is never initialized. It is used in:\n\t- init (tests/uninitialized-0.5.1.sol#49-51)\n", "elements": [
"elements": [ {
{ "type": "variable",
"type": "variable", "name": "v",
"name": "v", "source_mapping": {
"source_mapping": { "start": 779,
"start": 779, "length": 6,
"length": 6, "filename_used": "/home/travis/build/crytic/slither/tests/uninitialized-0.5.1.sol",
"filename_used": "/home/travis/build/crytic/slither/tests/uninitialized-0.5.1.sol", "filename_relative": "tests/uninitialized-0.5.1.sol",
"filename_relative": "tests/uninitialized-0.5.1.sol", "filename_absolute": "/home/travis/build/crytic/slither/tests/uninitialized-0.5.1.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/uninitialized-0.5.1.sol", "filename_short": "tests/uninitialized-0.5.1.sol",
"filename_short": "tests/uninitialized-0.5.1.sol", "lines": [
"lines": [ 47
47 ],
], "starting_column": 5,
"starting_column": 5, "ending_column": 11
"ending_column": 11 }
}
},
{
"type": "function",
"name": "init",
"source_mapping": {
"start": 848,
"length": 59,
"filename_used": "/home/travis/build/crytic/slither/tests/uninitialized-0.5.1.sol",
"filename_relative": "tests/uninitialized-0.5.1.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/uninitialized-0.5.1.sol",
"filename_short": "tests/uninitialized-0.5.1.sol",
"lines": [
49,
50,
51
],
"starting_column": 5,
"ending_column": 6
}, },
"contract": { {
"type": "contract", "type": "function",
"name": "Test2", "name": "init",
"source_mapping": { "source_mapping": {
"start": 672, "start": 848,
"length": 373, "length": 59,
"filename_used": "/home/travis/build/crytic/slither/tests/uninitialized-0.5.1.sol", "filename_used": "/home/travis/build/crytic/slither/tests/uninitialized-0.5.1.sol",
"filename_relative": "tests/uninitialized-0.5.1.sol", "filename_relative": "tests/uninitialized-0.5.1.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/uninitialized-0.5.1.sol", "filename_absolute": "/home/travis/build/crytic/slither/tests/uninitialized-0.5.1.sol",
"filename_short": "tests/uninitialized-0.5.1.sol", "filename_short": "tests/uninitialized-0.5.1.sol",
"lines": [ "lines": [
42,
43,
44,
45,
46,
47,
48,
49, 49,
50, 50,
51, 51
52,
53,
54,
55,
56,
57,
58
], ],
"starting_column": 1, "starting_column": 5,
"ending_column": 2 "ending_column": 6
},
"contract": {
"type": "contract",
"name": "Test2",
"source_mapping": {
"start": 672,
"length": 373,
"filename_used": "/home/travis/build/crytic/slither/tests/uninitialized-0.5.1.sol",
"filename_relative": "tests/uninitialized-0.5.1.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/uninitialized-0.5.1.sol",
"filename_short": "tests/uninitialized-0.5.1.sol",
"lines": [
42,
43,
44,
45,
46,
47,
48,
49,
50,
51,
52,
53,
54,
55,
56,
57,
58
],
"starting_column": 1,
"ending_column": 2
}
} }
} }
} ]
] }
} ]
] }

@ -1,301 +1,305 @@
[ {
{ "success": true,
"check": "uninitialized-state", "error": null,
"impact": "High", "results": [
"confidence": "High", {
"description": "Uninitialized.destination (tests/uninitialized.sol#5) is never initialized. It is used in:\n\t- transfer (tests/uninitialized.sol#7-9)\n", "check": "uninitialized-state",
"elements": [ "impact": "High",
{ "confidence": "High",
"type": "variable", "description": "Uninitialized.destination (tests/uninitialized.sol#5) is never initialized. It is used in:\n\t- transfer (tests/uninitialized.sol#7-9)\n",
"name": "destination", "elements": [
"source_mapping": { {
"start": 55, "type": "variable",
"length": 19, "name": "destination",
"filename_used": "/home/travis/build/crytic/slither/tests/uninitialized.sol", "source_mapping": {
"filename_relative": "tests/uninitialized.sol", "start": 55,
"filename_absolute": "/home/travis/build/crytic/slither/tests/uninitialized.sol", "length": 19,
"filename_short": "tests/uninitialized.sol", "filename_used": "/home/travis/build/crytic/slither/tests/uninitialized.sol",
"lines": [ "filename_relative": "tests/uninitialized.sol",
5 "filename_absolute": "/home/travis/build/crytic/slither/tests/uninitialized.sol",
], "filename_short": "tests/uninitialized.sol",
"starting_column": 5, "lines": [
"ending_column": 24 5
} ],
}, "starting_column": 5,
{ "ending_column": 24
"type": "function", }
"name": "transfer",
"source_mapping": {
"start": 81,
"length": 82,
"filename_used": "/home/travis/build/crytic/slither/tests/uninitialized.sol",
"filename_relative": "tests/uninitialized.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/uninitialized.sol",
"filename_short": "tests/uninitialized.sol",
"lines": [
7,
8,
9
],
"starting_column": 5,
"ending_column": 6
}, },
"contract": { {
"type": "contract", "type": "function",
"name": "Uninitialized", "name": "transfer",
"source_mapping": { "source_mapping": {
"start": 26, "start": 81,
"length": 140, "length": 82,
"filename_used": "/home/travis/build/crytic/slither/tests/uninitialized.sol", "filename_used": "/home/travis/build/crytic/slither/tests/uninitialized.sol",
"filename_relative": "tests/uninitialized.sol", "filename_relative": "tests/uninitialized.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/uninitialized.sol", "filename_absolute": "/home/travis/build/crytic/slither/tests/uninitialized.sol",
"filename_short": "tests/uninitialized.sol", "filename_short": "tests/uninitialized.sol",
"lines": [ "lines": [
3,
4,
5,
6,
7, 7,
8, 8,
9, 9
10,
11
], ],
"starting_column": 1, "starting_column": 5,
"ending_column": 2 "ending_column": 6
},
"contract": {
"type": "contract",
"name": "Uninitialized",
"source_mapping": {
"start": 26,
"length": 140,
"filename_used": "/home/travis/build/crytic/slither/tests/uninitialized.sol",
"filename_relative": "tests/uninitialized.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/uninitialized.sol",
"filename_short": "tests/uninitialized.sol",
"lines": [
3,
4,
5,
6,
7,
8,
9,
10,
11
],
"starting_column": 1,
"ending_column": 2
}
} }
} }
} ]
] },
}, {
{ "check": "uninitialized-state",
"check": "uninitialized-state", "impact": "High",
"impact": "High", "confidence": "High",
"confidence": "High", "description": "Test.balances (tests/uninitialized.sol#15) is never initialized. It is used in:\n\t- use (tests/uninitialized.sol#23-26)\n",
"description": "Test.balances (tests/uninitialized.sol#15) is never initialized. It is used in:\n\t- use (tests/uninitialized.sol#23-26)\n", "elements": [
"elements": [ {
{ "type": "variable",
"type": "variable", "name": "balances",
"name": "balances", "source_mapping": {
"source_mapping": { "start": 189,
"start": 189, "length": 34,
"length": 34, "filename_used": "/home/travis/build/crytic/slither/tests/uninitialized.sol",
"filename_used": "/home/travis/build/crytic/slither/tests/uninitialized.sol", "filename_relative": "tests/uninitialized.sol",
"filename_relative": "tests/uninitialized.sol", "filename_absolute": "/home/travis/build/crytic/slither/tests/uninitialized.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/uninitialized.sol", "filename_short": "tests/uninitialized.sol",
"filename_short": "tests/uninitialized.sol", "lines": [
"lines": [ 15
15 ],
], "starting_column": 5,
"starting_column": 5, "ending_column": 39
"ending_column": 39 }
}
},
{
"type": "function",
"name": "use",
"source_mapping": {
"start": 356,
"length": 143,
"filename_used": "/home/travis/build/crytic/slither/tests/uninitialized.sol",
"filename_relative": "tests/uninitialized.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/uninitialized.sol",
"filename_short": "tests/uninitialized.sol",
"lines": [
23,
24,
25,
26
],
"starting_column": 5,
"ending_column": 6
}, },
"contract": { {
"type": "contract", "type": "function",
"name": "Test", "name": "use",
"source_mapping": { "source_mapping": {
"start": 169, "start": 356,
"length": 332, "length": 143,
"filename_used": "/home/travis/build/crytic/slither/tests/uninitialized.sol", "filename_used": "/home/travis/build/crytic/slither/tests/uninitialized.sol",
"filename_relative": "tests/uninitialized.sol", "filename_relative": "tests/uninitialized.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/uninitialized.sol", "filename_absolute": "/home/travis/build/crytic/slither/tests/uninitialized.sol",
"filename_short": "tests/uninitialized.sol", "filename_short": "tests/uninitialized.sol",
"lines": [ "lines": [
14,
15,
16,
17,
18,
19,
20,
21,
22,
23, 23,
24, 24,
25, 25,
26, 26
27
], ],
"starting_column": 1, "starting_column": 5,
"ending_column": 2 "ending_column": 6
},
"contract": {
"type": "contract",
"name": "Test",
"source_mapping": {
"start": 169,
"length": 332,
"filename_used": "/home/travis/build/crytic/slither/tests/uninitialized.sol",
"filename_relative": "tests/uninitialized.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/uninitialized.sol",
"filename_short": "tests/uninitialized.sol",
"lines": [
14,
15,
16,
17,
18,
19,
20,
21,
22,
23,
24,
25,
26,
27
],
"starting_column": 1,
"ending_column": 2
}
} }
} }
} ]
] },
}, {
{ "check": "uninitialized-state",
"check": "uninitialized-state", "impact": "High",
"impact": "High", "confidence": "High",
"confidence": "High", "description": "Test2.st (tests/uninitialized.sol#45) is never initialized. It is used in:\n\t- use (tests/uninitialized.sol#53-56)\n",
"description": "Test2.st (tests/uninitialized.sol#45) is never initialized. It is used in:\n\t- use (tests/uninitialized.sol#53-56)\n", "elements": [
"elements": [ {
{ "type": "variable",
"type": "variable", "name": "st",
"name": "st", "source_mapping": {
"source_mapping": { "start": 695,
"start": 695, "length": 15,
"length": 15, "filename_used": "/home/travis/build/crytic/slither/tests/uninitialized.sol",
"filename_used": "/home/travis/build/crytic/slither/tests/uninitialized.sol", "filename_relative": "tests/uninitialized.sol",
"filename_relative": "tests/uninitialized.sol", "filename_absolute": "/home/travis/build/crytic/slither/tests/uninitialized.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/uninitialized.sol", "filename_short": "tests/uninitialized.sol",
"filename_short": "tests/uninitialized.sol", "lines": [
"lines": [ 45
45 ],
], "starting_column": 5,
"starting_column": 5, "ending_column": 20
"ending_column": 20 }
}
},
{
"type": "function",
"name": "use",
"source_mapping": {
"start": 875,
"length": 117,
"filename_used": "/home/travis/build/crytic/slither/tests/uninitialized.sol",
"filename_relative": "tests/uninitialized.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/uninitialized.sol",
"filename_short": "tests/uninitialized.sol",
"lines": [
53,
54,
55,
56
],
"starting_column": 5,
"ending_column": 6
}, },
"contract": { {
"type": "contract", "type": "function",
"name": "Test2", "name": "use",
"source_mapping": { "source_mapping": {
"start": 641, "start": 875,
"length": 354, "length": 117,
"filename_used": "/home/travis/build/crytic/slither/tests/uninitialized.sol", "filename_used": "/home/travis/build/crytic/slither/tests/uninitialized.sol",
"filename_relative": "tests/uninitialized.sol", "filename_relative": "tests/uninitialized.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/uninitialized.sol", "filename_absolute": "/home/travis/build/crytic/slither/tests/uninitialized.sol",
"filename_short": "tests/uninitialized.sol", "filename_short": "tests/uninitialized.sol",
"lines": [ "lines": [
42,
43,
44,
45,
46,
47,
48,
49,
50,
51,
52,
53, 53,
54, 54,
55, 55,
56, 56
57,
58
], ],
"starting_column": 1, "starting_column": 5,
"ending_column": 2 "ending_column": 6
},
"contract": {
"type": "contract",
"name": "Test2",
"source_mapping": {
"start": 641,
"length": 354,
"filename_used": "/home/travis/build/crytic/slither/tests/uninitialized.sol",
"filename_relative": "tests/uninitialized.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/uninitialized.sol",
"filename_short": "tests/uninitialized.sol",
"lines": [
42,
43,
44,
45,
46,
47,
48,
49,
50,
51,
52,
53,
54,
55,
56,
57,
58
],
"starting_column": 1,
"ending_column": 2
}
} }
} }
} ]
] },
}, {
{ "check": "uninitialized-state",
"check": "uninitialized-state", "impact": "High",
"impact": "High", "confidence": "High",
"confidence": "High", "description": "Test2.v (tests/uninitialized.sol#47) is never initialized. It is used in:\n\t- init (tests/uninitialized.sol#49-51)\n",
"description": "Test2.v (tests/uninitialized.sol#47) is never initialized. It is used in:\n\t- init (tests/uninitialized.sol#49-51)\n", "elements": [
"elements": [ {
{ "type": "variable",
"type": "variable", "name": "v",
"name": "v", "source_mapping": {
"source_mapping": { "start": 748,
"start": 748, "length": 6,
"length": 6, "filename_used": "/home/travis/build/crytic/slither/tests/uninitialized.sol",
"filename_used": "/home/travis/build/crytic/slither/tests/uninitialized.sol", "filename_relative": "tests/uninitialized.sol",
"filename_relative": "tests/uninitialized.sol", "filename_absolute": "/home/travis/build/crytic/slither/tests/uninitialized.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/uninitialized.sol", "filename_short": "tests/uninitialized.sol",
"filename_short": "tests/uninitialized.sol", "lines": [
"lines": [ 47
47 ],
], "starting_column": 5,
"starting_column": 5, "ending_column": 11
"ending_column": 11 }
}
},
{
"type": "function",
"name": "init",
"source_mapping": {
"start": 817,
"length": 52,
"filename_used": "/home/travis/build/crytic/slither/tests/uninitialized.sol",
"filename_relative": "tests/uninitialized.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/uninitialized.sol",
"filename_short": "tests/uninitialized.sol",
"lines": [
49,
50,
51
],
"starting_column": 5,
"ending_column": 6
}, },
"contract": { {
"type": "contract", "type": "function",
"name": "Test2", "name": "init",
"source_mapping": { "source_mapping": {
"start": 641, "start": 817,
"length": 354, "length": 52,
"filename_used": "/home/travis/build/crytic/slither/tests/uninitialized.sol", "filename_used": "/home/travis/build/crytic/slither/tests/uninitialized.sol",
"filename_relative": "tests/uninitialized.sol", "filename_relative": "tests/uninitialized.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/uninitialized.sol", "filename_absolute": "/home/travis/build/crytic/slither/tests/uninitialized.sol",
"filename_short": "tests/uninitialized.sol", "filename_short": "tests/uninitialized.sol",
"lines": [ "lines": [
42,
43,
44,
45,
46,
47,
48,
49, 49,
50, 50,
51, 51
52,
53,
54,
55,
56,
57,
58
], ],
"starting_column": 1, "starting_column": 5,
"ending_column": 2 "ending_column": 6
},
"contract": {
"type": "contract",
"name": "Test2",
"source_mapping": {
"start": 641,
"length": 354,
"filename_used": "/home/travis/build/crytic/slither/tests/uninitialized.sol",
"filename_relative": "tests/uninitialized.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/uninitialized.sol",
"filename_short": "tests/uninitialized.sol",
"lines": [
42,
43,
44,
45,
46,
47,
48,
49,
50,
51,
52,
53,
54,
55,
56,
57,
58
],
"starting_column": 1,
"ending_column": 2
}
} }
} }
} ]
] }
} ]
] }

@ -1,73 +1,77 @@
[ {
{ "success": true,
"check": "uninitialized-local", "error": null,
"impact": "Medium", "results": [
"confidence": "Medium", {
"description": "uint_not_init in Uninitialized.func (tests/uninitialized_local_variable.sol#4) is a local variable never initialiazed\n", "check": "uninitialized-local",
"elements": [ "impact": "Medium",
{ "confidence": "Medium",
"type": "variable", "description": "uint_not_init in Uninitialized.func (tests/uninitialized_local_variable.sol#4) is a local variable never initialiazed\n",
"name": "uint_not_init", "elements": [
"source_mapping": { {
"start": 77, "type": "variable",
"length": 18, "name": "uint_not_init",
"filename_used": "/home/travis/build/crytic/slither/tests/uninitialized_local_variable.sol", "source_mapping": {
"filename_relative": "tests/uninitialized_local_variable.sol", "start": 77,
"filename_absolute": "/home/travis/build/crytic/slither/tests/uninitialized_local_variable.sol", "length": 18,
"filename_short": "tests/uninitialized_local_variable.sol", "filename_used": "/home/travis/build/crytic/slither/tests/uninitialized_local_variable.sol",
"lines": [ "filename_relative": "tests/uninitialized_local_variable.sol",
4 "filename_absolute": "/home/travis/build/crytic/slither/tests/uninitialized_local_variable.sol",
], "filename_short": "tests/uninitialized_local_variable.sol",
"starting_column": 9, "lines": [
"ending_column": 27 4
} ],
}, "starting_column": 9,
{ "ending_column": 27
"type": "function", }
"name": "func",
"source_mapping": {
"start": 29,
"length": 143,
"filename_used": "/home/travis/build/crytic/slither/tests/uninitialized_local_variable.sol",
"filename_relative": "tests/uninitialized_local_variable.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/uninitialized_local_variable.sol",
"filename_short": "tests/uninitialized_local_variable.sol",
"lines": [
3,
4,
5,
6,
7
],
"starting_column": 5,
"ending_column": 6
}, },
"contract": { {
"type": "contract", "type": "function",
"name": "Uninitialized", "name": "func",
"source_mapping": { "source_mapping": {
"start": 0, "start": 29,
"length": 179, "length": 143,
"filename_used": "/home/travis/build/crytic/slither/tests/uninitialized_local_variable.sol", "filename_used": "/home/travis/build/crytic/slither/tests/uninitialized_local_variable.sol",
"filename_relative": "tests/uninitialized_local_variable.sol", "filename_relative": "tests/uninitialized_local_variable.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/uninitialized_local_variable.sol", "filename_absolute": "/home/travis/build/crytic/slither/tests/uninitialized_local_variable.sol",
"filename_short": "tests/uninitialized_local_variable.sol", "filename_short": "tests/uninitialized_local_variable.sol",
"lines": [ "lines": [
1,
2,
3, 3,
4, 4,
5, 5,
6, 6,
7, 7
8,
9
], ],
"starting_column": 1, "starting_column": 5,
"ending_column": 2 "ending_column": 6
},
"contract": {
"type": "contract",
"name": "Uninitialized",
"source_mapping": {
"start": 0,
"length": 179,
"filename_used": "/home/travis/build/crytic/slither/tests/uninitialized_local_variable.sol",
"filename_relative": "tests/uninitialized_local_variable.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/uninitialized_local_variable.sol",
"filename_short": "tests/uninitialized_local_variable.sol",
"lines": [
1,
2,
3,
4,
5,
6,
7,
8,
9
],
"starting_column": 1,
"ending_column": 2
}
} }
} }
} ]
] }
} ]
] }

@ -1,79 +1,83 @@
[ {
{ "success": true,
"check": "uninitialized-storage", "error": null,
"impact": "High", "results": [
"confidence": "High", {
"description": "st_bug in Uninitialized.func (tests/uninitialized_storage_pointer.sol#10) is a storage variable never initialiazed\n", "check": "uninitialized-storage",
"elements": [ "impact": "High",
{ "confidence": "High",
"type": "variable", "description": "st_bug in Uninitialized.func (tests/uninitialized_storage_pointer.sol#10) is a storage variable never initialiazed\n",
"name": "st_bug", "elements": [
"source_mapping": { {
"start": 171, "type": "variable",
"length": 9, "name": "st_bug",
"filename_used": "/home/travis/build/crytic/slither/tests/uninitialized_storage_pointer.sol", "source_mapping": {
"filename_relative": "tests/uninitialized_storage_pointer.sol", "start": 171,
"filename_absolute": "/home/travis/build/crytic/slither/tests/uninitialized_storage_pointer.sol", "length": 9,
"filename_short": "tests/uninitialized_storage_pointer.sol", "filename_used": "/home/travis/build/crytic/slither/tests/uninitialized_storage_pointer.sol",
"lines": [ "filename_relative": "tests/uninitialized_storage_pointer.sol",
10 "filename_absolute": "/home/travis/build/crytic/slither/tests/uninitialized_storage_pointer.sol",
], "filename_short": "tests/uninitialized_storage_pointer.sol",
"starting_column": 9, "lines": [
"ending_column": 18 10
} ],
}, "starting_column": 9,
{ "ending_column": 18
"type": "function", }
"name": "func",
"source_mapping": {
"start": 67,
"length": 143,
"filename_used": "/home/travis/build/crytic/slither/tests/uninitialized_storage_pointer.sol",
"filename_relative": "tests/uninitialized_storage_pointer.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/uninitialized_storage_pointer.sol",
"filename_short": "tests/uninitialized_storage_pointer.sol",
"lines": [
7,
8,
9,
10,
11,
12
],
"starting_column": 5,
"ending_column": 6
}, },
"contract": { {
"type": "contract", "type": "function",
"name": "Uninitialized", "name": "func",
"source_mapping": { "source_mapping": {
"start": 0, "start": 67,
"length": 217, "length": 143,
"filename_used": "/home/travis/build/crytic/slither/tests/uninitialized_storage_pointer.sol", "filename_used": "/home/travis/build/crytic/slither/tests/uninitialized_storage_pointer.sol",
"filename_relative": "tests/uninitialized_storage_pointer.sol", "filename_relative": "tests/uninitialized_storage_pointer.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/uninitialized_storage_pointer.sol", "filename_absolute": "/home/travis/build/crytic/slither/tests/uninitialized_storage_pointer.sol",
"filename_short": "tests/uninitialized_storage_pointer.sol", "filename_short": "tests/uninitialized_storage_pointer.sol",
"lines": [ "lines": [
1,
2,
3,
4,
5,
6,
7, 7,
8, 8,
9, 9,
10, 10,
11, 11,
12, 12
13,
14
], ],
"starting_column": 1, "starting_column": 5,
"ending_column": 2 "ending_column": 6
},
"contract": {
"type": "contract",
"name": "Uninitialized",
"source_mapping": {
"start": 0,
"length": 217,
"filename_used": "/home/travis/build/crytic/slither/tests/uninitialized_storage_pointer.sol",
"filename_relative": "tests/uninitialized_storage_pointer.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/uninitialized_storage_pointer.sol",
"filename_short": "tests/uninitialized_storage_pointer.sol",
"lines": [
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14
],
"starting_column": 1,
"ending_column": 2
}
} }
} }
} ]
] }
} ]
] }

@ -1,50 +1,5 @@
ERROR:root:Error in tests/uninitialized_storage_pointer.sol INFO:Detectors:
ERROR:root:Traceback (most recent call last): st_bug in Uninitialized.func (tests/uninitialized_storage_pointer.sol#10) is a storage variable never initialiazed
File "/home/monty/Private/tob/tools/crytic-compile/crytic_compile/platform/solc.py", line 189, in _run_solc Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#uninitialized-storage-variables
ret = json.loads(stdout) INFO:Slither:/home/travis/build/crytic/slither/scripts/../tests/expected_json/uninitialized_storage_pointer.uninitialized-storage.json exists already, the overwrite is prevented
File "/usr/lib/python3.6/json/__init__.py", line 354, in loads INFO:Slither:tests/uninitialized_storage_pointer.sol analyzed (1 contracts), 1 result(s) found
return _default_decoder.decode(s)
File "/usr/lib/python3.6/json/decoder.py", line 339, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "/usr/lib/python3.6/json/decoder.py", line 357, in raw_decode
raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/travis/build/crytic/slither/slither/slither.py", line 55, in __init__
crytic_compile = CryticCompile(contract, **kwargs)
File "/home/monty/Private/tob/tools/crytic-compile/crytic_compile/crytic_compile.py", line 68, in __init__
self._compile(target, **kwargs)
File "/home/monty/Private/tob/tools/crytic-compile/crytic_compile/crytic_compile.py", line 590, in _compile
self._platform.compile(self, target, **kwargs)
File "/home/monty/Private/tob/tools/crytic-compile/crytic_compile/platform/solc.py", line 33, in compile
working_dir=solc_working_dir)
File "/home/monty/Private/tob/tools/crytic-compile/crytic_compile/platform/solc.py", line 192, in _run_solc
raise InvalidCompilation(f'Invalid solc compilation {stderr}')
crytic_compile.platform.exceptions.InvalidCompilation: Invalid solc compilation tests/uninitialized_storage_pointer.sol:7:5: Error: No visibility specified. Did you intend to add "public"?
function func() {
^ (Relevant source part starts here and spans across multiple lines).
tests/uninitialized_storage_pointer.sol:1:1: Warning: Source file does not specify required compiler version! Consider adding "pragma solidity ^0.5.1;"
contract Uninitialized{
^ (Relevant source part starts here and spans across multiple lines).
tests/uninitialized_storage_pointer.sol:8:9: Error: Data location must be "storage" or "memory" for variable, but none was given.
St st; // non init, but never read so its fine
^---^
tests/uninitialized_storage_pointer.sol:10:9: Error: Data location must be "storage" or "memory" for variable, but none was given.
St st_bug;
^-------^
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/travis/build/crytic/slither/slither/__main__.py", line 520, in main_impl
(results, number_contracts) = process(filename, args, detector_classes, printer_classes)
File "/home/travis/build/crytic/slither/slither/__main__.py", line 52, in process
**vars(args))
File "/home/travis/build/crytic/slither/slither/slither.py", line 58, in __init__
raise SlitherError('Invalid compilation: '+e)
TypeError: must be str, not InvalidCompilation

@ -1,53 +1,24 @@
[ {
{ "success": true,
"check": "unused-return", "error": null,
"impact": "Medium", "results": [
"confidence": "Medium", {
"description": "User.test (tests/unused_return.sol#17-29) does not use the value returned by external calls:\n\t-t.f() (tests/unused_return.sol#18)\n\t-a.add(0) (tests/unused_return.sol#22)\n", "check": "unused-return",
"elements": [ "impact": "Medium",
{ "confidence": "Medium",
"type": "function", "description": "User.test (tests/unused_return.sol#17-29) does not use the value returned by external calls:\n\t-t.f() (tests/unused_return.sol#18)\n\t-a.add(0) (tests/unused_return.sol#22)\n",
"name": "test", "elements": [
"source_mapping": { {
"start": 239, "type": "function",
"length": 354, "name": "test",
"filename_used": "/home/travis/build/crytic/slither/tests/unused_return.sol",
"filename_relative": "tests/unused_return.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/unused_return.sol",
"filename_short": "tests/unused_return.sol",
"lines": [
17,
18,
19,
20,
21,
22,
23,
24,
25,
26,
27,
28,
29
],
"starting_column": 5,
"ending_column": 6
},
"contract": {
"type": "contract",
"name": "User",
"source_mapping": { "source_mapping": {
"start": 189, "start": 239,
"length": 406, "length": 354,
"filename_used": "/home/travis/build/crytic/slither/tests/unused_return.sol", "filename_used": "/home/travis/build/crytic/slither/tests/unused_return.sol",
"filename_relative": "tests/unused_return.sol", "filename_relative": "tests/unused_return.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/unused_return.sol", "filename_absolute": "/home/travis/build/crytic/slither/tests/unused_return.sol",
"filename_short": "tests/unused_return.sol", "filename_short": "tests/unused_return.sol",
"lines": [ "lines": [
13,
14,
15,
16,
17, 17,
18, 18,
19, 19,
@ -60,48 +31,81 @@
26, 26,
27, 27,
28, 28,
29, 29
30
], ],
"starting_column": 1, "starting_column": 5,
"ending_column": 2 "ending_column": 6
},
"contract": {
"type": "contract",
"name": "User",
"source_mapping": {
"start": 189,
"length": 406,
"filename_used": "/home/travis/build/crytic/slither/tests/unused_return.sol",
"filename_relative": "tests/unused_return.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/unused_return.sol",
"filename_short": "tests/unused_return.sol",
"lines": [
13,
14,
15,
16,
17,
18,
19,
20,
21,
22,
23,
24,
25,
26,
27,
28,
29,
30
],
"starting_column": 1,
"ending_column": 2
}
}
},
{
"type": "expression",
"expression": "t.f()",
"source_mapping": {
"start": 279,
"length": 5,
"filename_used": "/home/travis/build/crytic/slither/tests/unused_return.sol",
"filename_relative": "tests/unused_return.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/unused_return.sol",
"filename_short": "tests/unused_return.sol",
"lines": [
18
],
"starting_column": 9,
"ending_column": 14
}
},
{
"type": "expression",
"expression": "a.add(0)",
"source_mapping": {
"start": 353,
"length": 8,
"filename_used": "/home/travis/build/crytic/slither/tests/unused_return.sol",
"filename_relative": "tests/unused_return.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/unused_return.sol",
"filename_short": "tests/unused_return.sol",
"lines": [
22
],
"starting_column": 9,
"ending_column": 17
} }
} }
}, ]
{ }
"type": "expression", ]
"expression": "t.f()", }
"source_mapping": {
"start": 279,
"length": 5,
"filename_used": "/home/travis/build/crytic/slither/tests/unused_return.sol",
"filename_relative": "tests/unused_return.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/unused_return.sol",
"filename_short": "tests/unused_return.sol",
"lines": [
18
],
"starting_column": 9,
"ending_column": 14
}
},
{
"type": "expression",
"expression": "a.add(0)",
"source_mapping": {
"start": 353,
"length": 8,
"filename_used": "/home/travis/build/crytic/slither/tests/unused_return.sol",
"filename_relative": "tests/unused_return.sol",
"filename_absolute": "/home/travis/build/crytic/slither/tests/unused_return.sol",
"filename_short": "tests/unused_return.sol",
"lines": [
22
],
"starting_column": 9,
"ending_column": 17
}
}
]
}
]

@ -1,27 +1,31 @@
[ {
{ "success": true,
"check": "unused-state", "error": null,
"impact": "Informational", "results": [
"confidence": "High", {
"description": "A.unused (tests/unused_state.sol#4) is never used in B\n", "check": "unused-state",
"elements": [ "impact": "Informational",
{ "confidence": "High",
"type": "variable", "description": "A.unused (tests/unused_state.sol#4) is never used in B\n",
"name": "unused", "elements": [
"source_mapping": { {
"start": 44, "type": "variable",
"length": 14, "name": "unused",
"filename_used": "/home/travis/build/crytic/slither/tests/unused_state.sol", "source_mapping": {
"filename_relative": "tests/unused_state.sol", "start": 44,
"filename_absolute": "/home/travis/build/crytic/slither/tests/unused_state.sol", "length": 14,
"filename_short": "tests/unused_state.sol", "filename_used": "/home/travis/build/crytic/slither/tests/unused_state.sol",
"lines": [ "filename_relative": "tests/unused_state.sol",
4 "filename_absolute": "/home/travis/build/crytic/slither/tests/unused_state.sol",
], "filename_short": "tests/unused_state.sol",
"starting_column": 5, "lines": [
"ending_column": 19 4
],
"starting_column": 5,
"ending_column": 19
}
} }
} ]
] }
} ]
] }
Loading…
Cancel
Save