From 1af07d15bb20622e01a6dfcb0daaeb795b6ef617 Mon Sep 17 00:00:00 2001 From: alpharush <0xalpharush@protonmail.com> Date: Fri, 1 Mar 2024 17:58:54 -0600 Subject: [PATCH 1/3] add known solc bugs, remove allowed versions, improve formatting --- scripts/update_buggy_versions.py | 25 + .../detectors/attributes/constant_pragma.py | 26 +- .../detectors/attributes/incorrect_solc.py | 92 +- slither/utils/buggy_versions.py | 1655 +++++++++++++++++ ...tantPragma_0_4_25_pragma_0_4_25_sol__0.txt | 9 +- ...tantPragma_0_5_16_pragma_0_5_16_sol__0.txt | 9 +- ...tantPragma_0_6_11_pragma_0_6_11_sol__0.txt | 9 +- ...nstantPragma_0_7_6_pragma_0_7_6_sol__0.txt | 9 +- ...tor_IncorrectSolc_0_4_25_static_sol__0.txt | 21 +- ...tor_IncorrectSolc_0_5_14_static_sol__0.txt | 21 +- ..._IncorrectSolc_0_5_16_dynamic_1_sol__0.txt | 19 +- ..._IncorrectSolc_0_5_16_dynamic_2_sol__0.txt | 21 +- ...tor_IncorrectSolc_0_5_16_static_sol__0.txt | 18 +- ...tor_IncorrectSolc_0_6_10_static_sol__0.txt | 17 +- ..._IncorrectSolc_0_6_11_dynamic_1_sol__0.txt | 17 +- ..._IncorrectSolc_0_6_11_dynamic_2_sol__0.txt | 19 +- ...tor_IncorrectSolc_0_6_11_static_sol__0.txt | 17 +- ...ctor_IncorrectSolc_0_7_4_static_sol__0.txt | 15 +- ...r_IncorrectSolc_0_7_6_dynamic_1_sol__0.txt | 15 +- ...r_IncorrectSolc_0_7_6_dynamic_2_sol__0.txt | 6 +- ...ctor_IncorrectSolc_0_7_6_static_sol__0.txt | 15 +- 21 files changed, 1946 insertions(+), 109 deletions(-) create mode 100644 scripts/update_buggy_versions.py create mode 100644 slither/utils/buggy_versions.py diff --git a/scripts/update_buggy_versions.py b/scripts/update_buggy_versions.py new file mode 100644 index 0000000000..298a268b99 --- /dev/null +++ b/scripts/update_buggy_versions.py @@ -0,0 +1,25 @@ +import json +from pathlib import Path +import urllib.request + + +def retrieve_json(url): + with urllib.request.urlopen(url) as response: + data = response.read().decode("utf-8") + return json.loads(data) + + +def organize_data(json_data): + version_bugs = {} + for version, info in json_data.items(): + version_bugs[version] = info["bugs"] + return version_bugs + + +if __name__ == "__main__": + url = "https://raw.githubusercontent.com/ethereum/solidity/develop/docs/bugs_by_version.json" + json_data = retrieve_json(url) + version_bugs = organize_data(json_data) + + with open(Path.cwd() / Path("slither/utils/buggy_versions.py"), "w") as file: + file.write(f"bugs_by_version = {version_bugs}") diff --git a/slither/detectors/attributes/constant_pragma.py b/slither/detectors/attributes/constant_pragma.py index 2ed76c86ad..44a2cb791c 100644 --- a/slither/detectors/attributes/constant_pragma.py +++ b/slither/detectors/attributes/constant_pragma.py @@ -1,6 +1,7 @@ """ Check that the same pragma is used in all the files """ +from collections import OrderedDict from typing import List, Dict from slither.core.compilation_unit import SlitherCompilationUnit @@ -31,16 +32,25 @@ class ConstantPragma(AbstractDetector): def _detect(self) -> List[Output]: results = [] - pragma = self.compilation_unit.pragma_directives - versions = [p.version for p in pragma if p.is_solidity_version] - versions = sorted(list(set(versions))) - + pragma_directives_by_version = OrderedDict() + for pragma in self.compilation_unit.pragma_directives: + if pragma.is_solidity_version: + if pragma.version not in pragma_directives_by_version: + pragma_directives_by_version[ + pragma.version + ] = f"\t\t- {str(pragma.source_mapping)}\n" + else: + pragma_directives_by_version[ + pragma.version + ] += f"\t\t- {str(pragma.source_mapping)}\n" + + versions = list(pragma_directives_by_version.keys()) if len(versions) > 1: - info: DETECTOR_INFO = ["Different versions of Solidity are used:\n"] - info += [f"\t- Version used: {[str(v) for v in versions]}\n"] + info: DETECTOR_INFO = [f"{len(versions)} different versions of Solidity are used:\n"] - for p in sorted(pragma, key=lambda x: x.version): - info += ["\t- ", p, "\n"] + for version in versions: + pragma = pragma_directives_by_version[version] + info += [f"\t- Version constraint {version} is used by:\n {pragma}"] res = self.generate_result(info) diff --git a/slither/detectors/attributes/incorrect_solc.py b/slither/detectors/attributes/incorrect_solc.py index ad38b17843..e500c51f2c 100644 --- a/slither/detectors/attributes/incorrect_solc.py +++ b/slither/detectors/attributes/incorrect_solc.py @@ -12,6 +12,7 @@ ) from slither.formatters.attributes.incorrect_solc import custom_format from slither.utils.output import Output +from slither.utils.buggy_versions import bugs_by_version # group: # 0: ^ > >= < <= (optional) @@ -46,64 +47,36 @@ class IncorrectSolc(AbstractDetector): # region wiki_recommendation WIKI_RECOMMENDATION = """ -Deploy with any of the following Solidity versions: -- 0.8.18 - -The recommendations take into account: -- Risks related to recent releases -- Risks of complex code generation changes -- Risks of new language features -- Risks of known bugs +Deploy with a recent version of Solidity (at least 0.8.0) with no known severe issues. Use a simple pragma version that allows any of these versions. Consider using the latest version of Solidity for testing.""" # endregion wiki_recommendation COMPLEX_PRAGMA_TXT = "is too complex" - OLD_VERSION_TXT = "allows old versions" + OLD_VERSION_TXT = ( + "is an outdated solc version. Use a more recent version (at least 0.8.0), if possible." + ) LESS_THAN_TXT = "uses lesser than" BUGGY_VERSION_TXT = ( - "is known to contain severe issues (https://solidity.readthedocs.io/en/latest/bugs.html)" + "contain known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html)" ) # Indicates the allowed versions. Must be formatted in increasing order. - ALLOWED_VERSIONS = ["0.8.18"] - - TOO_RECENT_VERSION_TXT = f"necessitates a version too recent to be trusted. Consider deploying with {'/'.join(ALLOWED_VERSIONS)}." - - # Indicates the versions that should not be used. - BUGGY_VERSIONS = [ - "0.4.22", - "^0.4.22", - "0.5.5", - "^0.5.5", - "0.5.6", - "^0.5.6", - "0.5.14", - "^0.5.14", - "0.6.9", - "^0.6.9", - "0.8.8", - "^0.8.8", - ] + ALLOWED_VERSIONS = ["0.8.0"] def _check_version(self, version: Tuple[str, str, str, str, str]) -> Optional[str]: op = version[0] if op and op not in [">", ">=", "^"]: return self.LESS_THAN_TXT version_number = ".".join(version[2:]) - if version_number in self.BUGGY_VERSIONS: - return self.BUGGY_VERSION_TXT - if version_number not in self.ALLOWED_VERSIONS: - if list(map(int, version[2:])) > list(map(int, self.ALLOWED_VERSIONS[-1].split("."))): - return self.TOO_RECENT_VERSION_TXT - return self.OLD_VERSION_TXT + if version_number in bugs_by_version: + bugs = "\n".join([f"\t- {bug}" for bug in bugs_by_version[version_number]]) + return self.BUGGY_VERSION_TXT + f"\n{bugs}" return None def _check_pragma(self, version: str) -> Optional[str]: - if version in self.BUGGY_VERSIONS: - return self.BUGGY_VERSION_TXT versions = PATTERN.findall(version) if len(versions) == 1: version = versions[0] @@ -130,42 +103,43 @@ def _detect(self) -> List[Output]: # Detect all version related pragmas and check if they are disallowed. results = [] pragma = self.compilation_unit.pragma_directives - disallowed_pragmas = [] + disallowed_pragmas = {} for p in pragma: # Skip any pragma directives which do not refer to version if len(p.directive) < 1 or p.directive[0] != "solidity": continue - # This is version, so we test if this is disallowed. reason = self._check_pragma(p.version) - if reason: - disallowed_pragmas.append((reason, p)) + if reason is None: + continue + + if p.version in disallowed_pragmas and reason in disallowed_pragmas[p.version]: + disallowed_pragmas[p.version][reason] += f"\t- {str(p.source_mapping)}\n" + else: + disallowed_pragmas[p.version] = {reason: f"\t- {str(p.source_mapping)}\n"} # If we found any disallowed pragmas, we output our findings. - if disallowed_pragmas: - for (reason, p) in disallowed_pragmas: - info: DETECTOR_INFO = ["Pragma version", p, f" {reason}\n"] + if len(disallowed_pragmas.keys()): + for p, reasons in disallowed_pragmas.items(): + info: DETECTOR_INFO = [] + for r, v in reasons.items(): + info += [f"Version constraint {p} {r}.\n It is used by:\n{v}"] json = self.generate_result(info) results.append(json) - if self.compilation_unit.solc_version not in self.ALLOWED_VERSIONS: - - if self.compilation_unit.solc_version in self.BUGGY_VERSIONS: - info = [ - "solc-", - self.compilation_unit.solc_version, - " ", - self.BUGGY_VERSION_TXT, - ] - else: - info = [ - "solc-", - self.compilation_unit.solc_version, - " is not recommended for deployment\n", - ] + if list(map(int, self.compilation_unit.solc_version.split("."))) < list( + map(int, self.ALLOWED_VERSIONS[-1].split(".")) + ): + info = [ + "solc-", + self.compilation_unit.solc_version, + " ", + self.OLD_VERSION_TXT, + "\n", + ] json = self.generate_result(info) diff --git a/slither/utils/buggy_versions.py b/slither/utils/buggy_versions.py new file mode 100644 index 0000000000..a30dabf55d --- /dev/null +++ b/slither/utils/buggy_versions.py @@ -0,0 +1,1655 @@ +bugs_by_version = { + "0.1.0": [ + "DirtyBytesArrayToStorage", + "KeccakCaching", + "EmptyByteArrayCopy", + "DynamicArrayCleanup", + "ExpExponentCleanup", + "ZeroFunctionSelector", + "ECRecoverMalformedInput", + "SkipEmptyStringLiteral", + "ConstantOptimizerSubtraction", + "IdentityPrecompileReturnIgnored", + "OptimizerStaleKnowledgeAboutSHA3", + "SendFailsForZeroEther", + "DynamicAllocationInfiniteLoop", + "OptimizerClearStateOnCodePathJoin", + "CleanBytesHigherOrderBits", + "ArrayAccessCleanHigherOrderBits", + "AncientCompiler", + ], + "0.1.1": [ + "DirtyBytesArrayToStorage", + "KeccakCaching", + "EmptyByteArrayCopy", + "DynamicArrayCleanup", + "ExpExponentCleanup", + "ZeroFunctionSelector", + "ECRecoverMalformedInput", + "SkipEmptyStringLiteral", + "ConstantOptimizerSubtraction", + "IdentityPrecompileReturnIgnored", + "OptimizerStaleKnowledgeAboutSHA3", + "SendFailsForZeroEther", + "DynamicAllocationInfiniteLoop", + "OptimizerClearStateOnCodePathJoin", + "CleanBytesHigherOrderBits", + "ArrayAccessCleanHigherOrderBits", + "AncientCompiler", + ], + "0.1.2": [ + "DirtyBytesArrayToStorage", + "KeccakCaching", + "EmptyByteArrayCopy", + "DynamicArrayCleanup", + "ExpExponentCleanup", + "ZeroFunctionSelector", + "ECRecoverMalformedInput", + "SkipEmptyStringLiteral", + "ConstantOptimizerSubtraction", + "IdentityPrecompileReturnIgnored", + "OptimizerStaleKnowledgeAboutSHA3", + "SendFailsForZeroEther", + "DynamicAllocationInfiniteLoop", + "OptimizerClearStateOnCodePathJoin", + "CleanBytesHigherOrderBits", + "ArrayAccessCleanHigherOrderBits", + "AncientCompiler", + ], + "0.1.3": [ + "DirtyBytesArrayToStorage", + "KeccakCaching", + "EmptyByteArrayCopy", + "DynamicArrayCleanup", + "ExpExponentCleanup", + "ZeroFunctionSelector", + "ECRecoverMalformedInput", + "SkipEmptyStringLiteral", + "ConstantOptimizerSubtraction", + "IdentityPrecompileReturnIgnored", + "OptimizerStaleKnowledgeAboutSHA3", + "SendFailsForZeroEther", + "DynamicAllocationInfiniteLoop", + "OptimizerClearStateOnCodePathJoin", + "CleanBytesHigherOrderBits", + "ArrayAccessCleanHigherOrderBits", + "AncientCompiler", + ], + "0.1.4": [ + "DirtyBytesArrayToStorage", + "KeccakCaching", + "EmptyByteArrayCopy", + "DynamicArrayCleanup", + "ExpExponentCleanup", + "NestedArrayFunctionCallDecoder", + "ZeroFunctionSelector", + "ECRecoverMalformedInput", + "SkipEmptyStringLiteral", + "ConstantOptimizerSubtraction", + "IdentityPrecompileReturnIgnored", + "OptimizerStaleKnowledgeAboutSHA3", + "SendFailsForZeroEther", + "DynamicAllocationInfiniteLoop", + "OptimizerClearStateOnCodePathJoin", + "CleanBytesHigherOrderBits", + "ArrayAccessCleanHigherOrderBits", + "AncientCompiler", + ], + "0.1.5": [ + "DirtyBytesArrayToStorage", + "KeccakCaching", + "EmptyByteArrayCopy", + "DynamicArrayCleanup", + "ExpExponentCleanup", + "NestedArrayFunctionCallDecoder", + "ZeroFunctionSelector", + "ECRecoverMalformedInput", + "SkipEmptyStringLiteral", + "ConstantOptimizerSubtraction", + "IdentityPrecompileReturnIgnored", + "OptimizerStaleKnowledgeAboutSHA3", + "SendFailsForZeroEther", + "DynamicAllocationInfiniteLoop", + "OptimizerClearStateOnCodePathJoin", + "CleanBytesHigherOrderBits", + "ArrayAccessCleanHigherOrderBits", + "AncientCompiler", + ], + "0.1.6": [ + "DirtyBytesArrayToStorage", + "KeccakCaching", + "EmptyByteArrayCopy", + "DynamicArrayCleanup", + "TupleAssignmentMultiStackSlotComponents", + "ExpExponentCleanup", + "NestedArrayFunctionCallDecoder", + "ZeroFunctionSelector", + "ECRecoverMalformedInput", + "SkipEmptyStringLiteral", + "ConstantOptimizerSubtraction", + "IdentityPrecompileReturnIgnored", + "HighOrderByteCleanStorage", + "OptimizerStaleKnowledgeAboutSHA3", + "SendFailsForZeroEther", + "DynamicAllocationInfiniteLoop", + "OptimizerClearStateOnCodePathJoin", + "CleanBytesHigherOrderBits", + "ArrayAccessCleanHigherOrderBits", + "AncientCompiler", + ], + "0.1.7": [ + "DirtyBytesArrayToStorage", + "KeccakCaching", + "EmptyByteArrayCopy", + "DynamicArrayCleanup", + "TupleAssignmentMultiStackSlotComponents", + "ExpExponentCleanup", + "NestedArrayFunctionCallDecoder", + "ZeroFunctionSelector", + "ECRecoverMalformedInput", + "SkipEmptyStringLiteral", + "ConstantOptimizerSubtraction", + "IdentityPrecompileReturnIgnored", + "HighOrderByteCleanStorage", + "OptimizerStaleKnowledgeAboutSHA3", + "SendFailsForZeroEther", + "DynamicAllocationInfiniteLoop", + "OptimizerClearStateOnCodePathJoin", + "CleanBytesHigherOrderBits", + "ArrayAccessCleanHigherOrderBits", + "AncientCompiler", + ], + "0.2.0": [ + "DirtyBytesArrayToStorage", + "KeccakCaching", + "EmptyByteArrayCopy", + "DynamicArrayCleanup", + "TupleAssignmentMultiStackSlotComponents", + "MemoryArrayCreationOverflow", + "ExpExponentCleanup", + "NestedArrayFunctionCallDecoder", + "ZeroFunctionSelector", + "ECRecoverMalformedInput", + "SkipEmptyStringLiteral", + "ConstantOptimizerSubtraction", + "IdentityPrecompileReturnIgnored", + "HighOrderByteCleanStorage", + "OptimizerStaleKnowledgeAboutSHA3", + "SendFailsForZeroEther", + "DynamicAllocationInfiniteLoop", + "OptimizerClearStateOnCodePathJoin", + "CleanBytesHigherOrderBits", + "ArrayAccessCleanHigherOrderBits", + "AncientCompiler", + ], + "0.2.1": [ + "DirtyBytesArrayToStorage", + "KeccakCaching", + "EmptyByteArrayCopy", + "DynamicArrayCleanup", + "TupleAssignmentMultiStackSlotComponents", + "MemoryArrayCreationOverflow", + "ExpExponentCleanup", + "NestedArrayFunctionCallDecoder", + "ZeroFunctionSelector", + "ECRecoverMalformedInput", + "SkipEmptyStringLiteral", + "ConstantOptimizerSubtraction", + "IdentityPrecompileReturnIgnored", + "HighOrderByteCleanStorage", + "OptimizerStaleKnowledgeAboutSHA3", + "SendFailsForZeroEther", + "DynamicAllocationInfiniteLoop", + "OptimizerClearStateOnCodePathJoin", + "CleanBytesHigherOrderBits", + "ArrayAccessCleanHigherOrderBits", + "AncientCompiler", + ], + "0.2.2": [ + "DirtyBytesArrayToStorage", + "KeccakCaching", + "EmptyByteArrayCopy", + "DynamicArrayCleanup", + "TupleAssignmentMultiStackSlotComponents", + "MemoryArrayCreationOverflow", + "ExpExponentCleanup", + "NestedArrayFunctionCallDecoder", + "ZeroFunctionSelector", + "ECRecoverMalformedInput", + "SkipEmptyStringLiteral", + "ConstantOptimizerSubtraction", + "IdentityPrecompileReturnIgnored", + "HighOrderByteCleanStorage", + "OptimizerStaleKnowledgeAboutSHA3", + "SendFailsForZeroEther", + "DynamicAllocationInfiniteLoop", + "OptimizerClearStateOnCodePathJoin", + "CleanBytesHigherOrderBits", + "ArrayAccessCleanHigherOrderBits", + "AncientCompiler", + ], + "0.3.0": [ + "DirtyBytesArrayToStorage", + "KeccakCaching", + "EmptyByteArrayCopy", + "DynamicArrayCleanup", + "TupleAssignmentMultiStackSlotComponents", + "MemoryArrayCreationOverflow", + "privateCanBeOverridden", + "IncorrectEventSignatureInLibraries_0.4.x", + "ExpExponentCleanup", + "NestedArrayFunctionCallDecoder", + "ZeroFunctionSelector", + "DelegateCallReturnValue", + "ECRecoverMalformedInput", + "SkipEmptyStringLiteral", + "ConstantOptimizerSubtraction", + "IdentityPrecompileReturnIgnored", + "HighOrderByteCleanStorage", + "OptimizerStaleKnowledgeAboutSHA3", + "SendFailsForZeroEther", + "DynamicAllocationInfiniteLoop", + "OptimizerClearStateOnCodePathJoin", + "CleanBytesHigherOrderBits", + "ArrayAccessCleanHigherOrderBits", + ], + "0.3.1": [ + "DirtyBytesArrayToStorage", + "KeccakCaching", + "EmptyByteArrayCopy", + "DynamicArrayCleanup", + "TupleAssignmentMultiStackSlotComponents", + "MemoryArrayCreationOverflow", + "privateCanBeOverridden", + "IncorrectEventSignatureInLibraries_0.4.x", + "ExpExponentCleanup", + "NestedArrayFunctionCallDecoder", + "ZeroFunctionSelector", + "DelegateCallReturnValue", + "ECRecoverMalformedInput", + "SkipEmptyStringLiteral", + "ConstantOptimizerSubtraction", + "IdentityPrecompileReturnIgnored", + "HighOrderByteCleanStorage", + "OptimizerStaleKnowledgeAboutSHA3", + "SendFailsForZeroEther", + "DynamicAllocationInfiniteLoop", + "OptimizerClearStateOnCodePathJoin", + "CleanBytesHigherOrderBits", + ], + "0.3.2": [ + "DirtyBytesArrayToStorage", + "KeccakCaching", + "EmptyByteArrayCopy", + "DynamicArrayCleanup", + "TupleAssignmentMultiStackSlotComponents", + "MemoryArrayCreationOverflow", + "privateCanBeOverridden", + "IncorrectEventSignatureInLibraries_0.4.x", + "ExpExponentCleanup", + "NestedArrayFunctionCallDecoder", + "ZeroFunctionSelector", + "DelegateCallReturnValue", + "ECRecoverMalformedInput", + "SkipEmptyStringLiteral", + "ConstantOptimizerSubtraction", + "IdentityPrecompileReturnIgnored", + "HighOrderByteCleanStorage", + "OptimizerStaleKnowledgeAboutSHA3", + "SendFailsForZeroEther", + "DynamicAllocationInfiniteLoop", + "OptimizerClearStateOnCodePathJoin", + "CleanBytesHigherOrderBits", + ], + "0.3.3": [ + "DirtyBytesArrayToStorage", + "KeccakCaching", + "EmptyByteArrayCopy", + "DynamicArrayCleanup", + "TupleAssignmentMultiStackSlotComponents", + "MemoryArrayCreationOverflow", + "privateCanBeOverridden", + "IncorrectEventSignatureInLibraries_0.4.x", + "ExpExponentCleanup", + "NestedArrayFunctionCallDecoder", + "ZeroFunctionSelector", + "DelegateCallReturnValue", + "ECRecoverMalformedInput", + "SkipEmptyStringLiteral", + "ConstantOptimizerSubtraction", + "IdentityPrecompileReturnIgnored", + "HighOrderByteCleanStorage", + "OptimizerStaleKnowledgeAboutSHA3", + "SendFailsForZeroEther", + "DynamicAllocationInfiniteLoop", + "OptimizerClearStateOnCodePathJoin", + ], + "0.3.4": [ + "DirtyBytesArrayToStorage", + "KeccakCaching", + "EmptyByteArrayCopy", + "DynamicArrayCleanup", + "TupleAssignmentMultiStackSlotComponents", + "MemoryArrayCreationOverflow", + "privateCanBeOverridden", + "IncorrectEventSignatureInLibraries_0.4.x", + "ExpExponentCleanup", + "NestedArrayFunctionCallDecoder", + "ZeroFunctionSelector", + "DelegateCallReturnValue", + "ECRecoverMalformedInput", + "SkipEmptyStringLiteral", + "ConstantOptimizerSubtraction", + "IdentityPrecompileReturnIgnored", + "HighOrderByteCleanStorage", + "OptimizerStaleKnowledgeAboutSHA3", + "SendFailsForZeroEther", + "DynamicAllocationInfiniteLoop", + "OptimizerClearStateOnCodePathJoin", + ], + "0.3.5": [ + "DirtyBytesArrayToStorage", + "KeccakCaching", + "EmptyByteArrayCopy", + "DynamicArrayCleanup", + "TupleAssignmentMultiStackSlotComponents", + "MemoryArrayCreationOverflow", + "privateCanBeOverridden", + "IncorrectEventSignatureInLibraries_0.4.x", + "ExpExponentCleanup", + "NestedArrayFunctionCallDecoder", + "ZeroFunctionSelector", + "DelegateCallReturnValue", + "ECRecoverMalformedInput", + "SkipEmptyStringLiteral", + "ConstantOptimizerSubtraction", + "IdentityPrecompileReturnIgnored", + "HighOrderByteCleanStorage", + "OptimizerStaleKnowledgeAboutSHA3", + "SendFailsForZeroEther", + "DynamicAllocationInfiniteLoop", + "OptimizerClearStateOnCodePathJoin", + ], + "0.3.6": [ + "DirtyBytesArrayToStorage", + "KeccakCaching", + "EmptyByteArrayCopy", + "DynamicArrayCleanup", + "TupleAssignmentMultiStackSlotComponents", + "MemoryArrayCreationOverflow", + "privateCanBeOverridden", + "IncorrectEventSignatureInLibraries_0.4.x", + "ExpExponentCleanup", + "NestedArrayFunctionCallDecoder", + "ZeroFunctionSelector", + "DelegateCallReturnValue", + "ECRecoverMalformedInput", + "SkipEmptyStringLiteral", + "ConstantOptimizerSubtraction", + "IdentityPrecompileReturnIgnored", + "HighOrderByteCleanStorage", + "OptimizerStaleKnowledgeAboutSHA3", + "SendFailsForZeroEther", + ], + "0.4.0": [ + "DirtyBytesArrayToStorage", + "KeccakCaching", + "EmptyByteArrayCopy", + "DynamicArrayCleanup", + "TupleAssignmentMultiStackSlotComponents", + "MemoryArrayCreationOverflow", + "privateCanBeOverridden", + "IncorrectEventSignatureInLibraries_0.4.x", + "ExpExponentCleanup", + "NestedArrayFunctionCallDecoder", + "ZeroFunctionSelector", + "DelegateCallReturnValue", + "ECRecoverMalformedInput", + "SkipEmptyStringLiteral", + "ConstantOptimizerSubtraction", + "IdentityPrecompileReturnIgnored", + "HighOrderByteCleanStorage", + "OptimizerStaleKnowledgeAboutSHA3", + "LibrariesNotCallableFromPayableFunctions", + ], + "0.4.1": [ + "DirtyBytesArrayToStorage", + "KeccakCaching", + "EmptyByteArrayCopy", + "DynamicArrayCleanup", + "TupleAssignmentMultiStackSlotComponents", + "MemoryArrayCreationOverflow", + "privateCanBeOverridden", + "IncorrectEventSignatureInLibraries_0.4.x", + "ExpExponentCleanup", + "NestedArrayFunctionCallDecoder", + "ZeroFunctionSelector", + "DelegateCallReturnValue", + "ECRecoverMalformedInput", + "SkipEmptyStringLiteral", + "ConstantOptimizerSubtraction", + "IdentityPrecompileReturnIgnored", + "HighOrderByteCleanStorage", + "OptimizerStaleKnowledgeAboutSHA3", + "LibrariesNotCallableFromPayableFunctions", + ], + "0.4.10": [ + "DirtyBytesArrayToStorage", + "KeccakCaching", + "EmptyByteArrayCopy", + "DynamicArrayCleanup", + "ImplicitConstructorCallvalueCheck", + "TupleAssignmentMultiStackSlotComponents", + "MemoryArrayCreationOverflow", + "privateCanBeOverridden", + "SignedArrayStorageCopy", + "UninitializedFunctionPointerInConstructor_0.4.x", + "IncorrectEventSignatureInLibraries_0.4.x", + "ExpExponentCleanup", + "NestedArrayFunctionCallDecoder", + "ZeroFunctionSelector", + "DelegateCallReturnValue", + "ECRecoverMalformedInput", + "SkipEmptyStringLiteral", + "ConstantOptimizerSubtraction", + ], + "0.4.11": [ + "DirtyBytesArrayToStorage", + "KeccakCaching", + "EmptyByteArrayCopy", + "DynamicArrayCleanup", + "ImplicitConstructorCallvalueCheck", + "TupleAssignmentMultiStackSlotComponents", + "MemoryArrayCreationOverflow", + "privateCanBeOverridden", + "SignedArrayStorageCopy", + "UninitializedFunctionPointerInConstructor_0.4.x", + "IncorrectEventSignatureInLibraries_0.4.x", + "ExpExponentCleanup", + "NestedArrayFunctionCallDecoder", + "ZeroFunctionSelector", + "DelegateCallReturnValue", + "ECRecoverMalformedInput", + "SkipEmptyStringLiteral", + ], + "0.4.12": [ + "DirtyBytesArrayToStorage", + "KeccakCaching", + "EmptyByteArrayCopy", + "DynamicArrayCleanup", + "ImplicitConstructorCallvalueCheck", + "TupleAssignmentMultiStackSlotComponents", + "MemoryArrayCreationOverflow", + "privateCanBeOverridden", + "SignedArrayStorageCopy", + "UninitializedFunctionPointerInConstructor_0.4.x", + "IncorrectEventSignatureInLibraries_0.4.x", + "ExpExponentCleanup", + "NestedArrayFunctionCallDecoder", + "ZeroFunctionSelector", + "DelegateCallReturnValue", + "ECRecoverMalformedInput", + ], + "0.4.13": [ + "DirtyBytesArrayToStorage", + "KeccakCaching", + "EmptyByteArrayCopy", + "DynamicArrayCleanup", + "ImplicitConstructorCallvalueCheck", + "TupleAssignmentMultiStackSlotComponents", + "MemoryArrayCreationOverflow", + "privateCanBeOverridden", + "SignedArrayStorageCopy", + "UninitializedFunctionPointerInConstructor_0.4.x", + "IncorrectEventSignatureInLibraries_0.4.x", + "ExpExponentCleanup", + "NestedArrayFunctionCallDecoder", + "ZeroFunctionSelector", + "DelegateCallReturnValue", + "ECRecoverMalformedInput", + ], + "0.4.14": [ + "DirtyBytesArrayToStorage", + "KeccakCaching", + "EmptyByteArrayCopy", + "DynamicArrayCleanup", + "ImplicitConstructorCallvalueCheck", + "TupleAssignmentMultiStackSlotComponents", + "MemoryArrayCreationOverflow", + "privateCanBeOverridden", + "SignedArrayStorageCopy", + "UninitializedFunctionPointerInConstructor_0.4.x", + "IncorrectEventSignatureInLibraries_0.4.x", + "ExpExponentCleanup", + "NestedArrayFunctionCallDecoder", + "ZeroFunctionSelector", + "DelegateCallReturnValue", + ], + "0.4.15": [ + "DirtyBytesArrayToStorage", + "KeccakCaching", + "EmptyByteArrayCopy", + "DynamicArrayCleanup", + "ImplicitConstructorCallvalueCheck", + "TupleAssignmentMultiStackSlotComponents", + "MemoryArrayCreationOverflow", + "privateCanBeOverridden", + "SignedArrayStorageCopy", + "UninitializedFunctionPointerInConstructor_0.4.x", + "IncorrectEventSignatureInLibraries_0.4.x", + "ExpExponentCleanup", + "NestedArrayFunctionCallDecoder", + "ZeroFunctionSelector", + ], + "0.4.16": [ + "DirtyBytesArrayToStorage", + "ABIDecodeTwoDimensionalArrayMemory", + "KeccakCaching", + "EmptyByteArrayCopy", + "DynamicArrayCleanup", + "ImplicitConstructorCallvalueCheck", + "TupleAssignmentMultiStackSlotComponents", + "MemoryArrayCreationOverflow", + "privateCanBeOverridden", + "SignedArrayStorageCopy", + "ABIEncoderV2StorageArrayWithMultiSlotElement", + "DynamicConstructorArgumentsClippedABIV2", + "UninitializedFunctionPointerInConstructor_0.4.x", + "IncorrectEventSignatureInLibraries_0.4.x", + "ExpExponentCleanup", + "NestedArrayFunctionCallDecoder", + "ZeroFunctionSelector", + ], + "0.4.17": [ + "DirtyBytesArrayToStorage", + "ABIDecodeTwoDimensionalArrayMemory", + "KeccakCaching", + "EmptyByteArrayCopy", + "DynamicArrayCleanup", + "ImplicitConstructorCallvalueCheck", + "TupleAssignmentMultiStackSlotComponents", + "MemoryArrayCreationOverflow", + "privateCanBeOverridden", + "SignedArrayStorageCopy", + "ABIEncoderV2StorageArrayWithMultiSlotElement", + "DynamicConstructorArgumentsClippedABIV2", + "UninitializedFunctionPointerInConstructor_0.4.x", + "IncorrectEventSignatureInLibraries_0.4.x", + "ExpExponentCleanup", + "EventStructWrongData", + "NestedArrayFunctionCallDecoder", + "ZeroFunctionSelector", + ], + "0.4.18": [ + "DirtyBytesArrayToStorage", + "ABIDecodeTwoDimensionalArrayMemory", + "KeccakCaching", + "EmptyByteArrayCopy", + "DynamicArrayCleanup", + "ImplicitConstructorCallvalueCheck", + "TupleAssignmentMultiStackSlotComponents", + "MemoryArrayCreationOverflow", + "privateCanBeOverridden", + "SignedArrayStorageCopy", + "ABIEncoderV2StorageArrayWithMultiSlotElement", + "DynamicConstructorArgumentsClippedABIV2", + "UninitializedFunctionPointerInConstructor_0.4.x", + "IncorrectEventSignatureInLibraries_0.4.x", + "ExpExponentCleanup", + "EventStructWrongData", + "NestedArrayFunctionCallDecoder", + ], + "0.4.19": [ + "DirtyBytesArrayToStorage", + "ABIDecodeTwoDimensionalArrayMemory", + "KeccakCaching", + "EmptyByteArrayCopy", + "DynamicArrayCleanup", + "ImplicitConstructorCallvalueCheck", + "TupleAssignmentMultiStackSlotComponents", + "MemoryArrayCreationOverflow", + "privateCanBeOverridden", + "SignedArrayStorageCopy", + "ABIEncoderV2StorageArrayWithMultiSlotElement", + "DynamicConstructorArgumentsClippedABIV2", + "UninitializedFunctionPointerInConstructor_0.4.x", + "IncorrectEventSignatureInLibraries_0.4.x", + "ABIEncoderV2PackedStorage_0.4.x", + "ExpExponentCleanup", + "EventStructWrongData", + "NestedArrayFunctionCallDecoder", + ], + "0.4.2": [ + "DirtyBytesArrayToStorage", + "KeccakCaching", + "EmptyByteArrayCopy", + "DynamicArrayCleanup", + "TupleAssignmentMultiStackSlotComponents", + "MemoryArrayCreationOverflow", + "privateCanBeOverridden", + "IncorrectEventSignatureInLibraries_0.4.x", + "ExpExponentCleanup", + "NestedArrayFunctionCallDecoder", + "ZeroFunctionSelector", + "DelegateCallReturnValue", + "ECRecoverMalformedInput", + "SkipEmptyStringLiteral", + "ConstantOptimizerSubtraction", + "IdentityPrecompileReturnIgnored", + "HighOrderByteCleanStorage", + "OptimizerStaleKnowledgeAboutSHA3", + ], + "0.4.20": [ + "DirtyBytesArrayToStorage", + "ABIDecodeTwoDimensionalArrayMemory", + "KeccakCaching", + "EmptyByteArrayCopy", + "DynamicArrayCleanup", + "ImplicitConstructorCallvalueCheck", + "TupleAssignmentMultiStackSlotComponents", + "MemoryArrayCreationOverflow", + "privateCanBeOverridden", + "SignedArrayStorageCopy", + "ABIEncoderV2StorageArrayWithMultiSlotElement", + "DynamicConstructorArgumentsClippedABIV2", + "UninitializedFunctionPointerInConstructor_0.4.x", + "IncorrectEventSignatureInLibraries_0.4.x", + "ABIEncoderV2PackedStorage_0.4.x", + "ExpExponentCleanup", + "EventStructWrongData", + "NestedArrayFunctionCallDecoder", + ], + "0.4.21": [ + "DirtyBytesArrayToStorage", + "ABIDecodeTwoDimensionalArrayMemory", + "KeccakCaching", + "EmptyByteArrayCopy", + "DynamicArrayCleanup", + "ImplicitConstructorCallvalueCheck", + "TupleAssignmentMultiStackSlotComponents", + "MemoryArrayCreationOverflow", + "privateCanBeOverridden", + "SignedArrayStorageCopy", + "ABIEncoderV2StorageArrayWithMultiSlotElement", + "DynamicConstructorArgumentsClippedABIV2", + "UninitializedFunctionPointerInConstructor_0.4.x", + "IncorrectEventSignatureInLibraries_0.4.x", + "ABIEncoderV2PackedStorage_0.4.x", + "ExpExponentCleanup", + "EventStructWrongData", + "NestedArrayFunctionCallDecoder", + ], + "0.4.22": [ + "DirtyBytesArrayToStorage", + "ABIDecodeTwoDimensionalArrayMemory", + "KeccakCaching", + "EmptyByteArrayCopy", + "DynamicArrayCleanup", + "ImplicitConstructorCallvalueCheck", + "TupleAssignmentMultiStackSlotComponents", + "MemoryArrayCreationOverflow", + "privateCanBeOverridden", + "SignedArrayStorageCopy", + "ABIEncoderV2StorageArrayWithMultiSlotElement", + "DynamicConstructorArgumentsClippedABIV2", + "UninitializedFunctionPointerInConstructor_0.4.x", + "IncorrectEventSignatureInLibraries_0.4.x", + "ABIEncoderV2PackedStorage_0.4.x", + "ExpExponentCleanup", + "EventStructWrongData", + "OneOfTwoConstructorsSkipped", + ], + "0.4.23": [ + "DirtyBytesArrayToStorage", + "ABIDecodeTwoDimensionalArrayMemory", + "KeccakCaching", + "EmptyByteArrayCopy", + "DynamicArrayCleanup", + "ImplicitConstructorCallvalueCheck", + "TupleAssignmentMultiStackSlotComponents", + "MemoryArrayCreationOverflow", + "privateCanBeOverridden", + "SignedArrayStorageCopy", + "ABIEncoderV2StorageArrayWithMultiSlotElement", + "DynamicConstructorArgumentsClippedABIV2", + "UninitializedFunctionPointerInConstructor_0.4.x", + "IncorrectEventSignatureInLibraries_0.4.x", + "ABIEncoderV2PackedStorage_0.4.x", + "ExpExponentCleanup", + "EventStructWrongData", + ], + "0.4.24": [ + "DirtyBytesArrayToStorage", + "ABIDecodeTwoDimensionalArrayMemory", + "KeccakCaching", + "EmptyByteArrayCopy", + "DynamicArrayCleanup", + "ImplicitConstructorCallvalueCheck", + "TupleAssignmentMultiStackSlotComponents", + "MemoryArrayCreationOverflow", + "privateCanBeOverridden", + "SignedArrayStorageCopy", + "ABIEncoderV2StorageArrayWithMultiSlotElement", + "DynamicConstructorArgumentsClippedABIV2", + "UninitializedFunctionPointerInConstructor_0.4.x", + "IncorrectEventSignatureInLibraries_0.4.x", + "ABIEncoderV2PackedStorage_0.4.x", + "ExpExponentCleanup", + "EventStructWrongData", + ], + "0.4.25": [ + "DirtyBytesArrayToStorage", + "ABIDecodeTwoDimensionalArrayMemory", + "KeccakCaching", + "EmptyByteArrayCopy", + "DynamicArrayCleanup", + "ImplicitConstructorCallvalueCheck", + "TupleAssignmentMultiStackSlotComponents", + "MemoryArrayCreationOverflow", + "privateCanBeOverridden", + "SignedArrayStorageCopy", + "ABIEncoderV2StorageArrayWithMultiSlotElement", + "DynamicConstructorArgumentsClippedABIV2", + "UninitializedFunctionPointerInConstructor_0.4.x", + "IncorrectEventSignatureInLibraries_0.4.x", + "ABIEncoderV2PackedStorage_0.4.x", + ], + "0.4.26": [ + "DirtyBytesArrayToStorage", + "ABIDecodeTwoDimensionalArrayMemory", + "KeccakCaching", + "EmptyByteArrayCopy", + "DynamicArrayCleanup", + "ImplicitConstructorCallvalueCheck", + "TupleAssignmentMultiStackSlotComponents", + "MemoryArrayCreationOverflow", + "privateCanBeOverridden", + "SignedArrayStorageCopy", + "ABIEncoderV2StorageArrayWithMultiSlotElement", + "DynamicConstructorArgumentsClippedABIV2", + ], + "0.4.3": [ + "DirtyBytesArrayToStorage", + "KeccakCaching", + "EmptyByteArrayCopy", + "DynamicArrayCleanup", + "TupleAssignmentMultiStackSlotComponents", + "MemoryArrayCreationOverflow", + "privateCanBeOverridden", + "IncorrectEventSignatureInLibraries_0.4.x", + "ExpExponentCleanup", + "NestedArrayFunctionCallDecoder", + "ZeroFunctionSelector", + "DelegateCallReturnValue", + "ECRecoverMalformedInput", + "SkipEmptyStringLiteral", + "ConstantOptimizerSubtraction", + "IdentityPrecompileReturnIgnored", + "HighOrderByteCleanStorage", + ], + "0.4.4": [ + "DirtyBytesArrayToStorage", + "KeccakCaching", + "EmptyByteArrayCopy", + "DynamicArrayCleanup", + "TupleAssignmentMultiStackSlotComponents", + "MemoryArrayCreationOverflow", + "privateCanBeOverridden", + "IncorrectEventSignatureInLibraries_0.4.x", + "ExpExponentCleanup", + "NestedArrayFunctionCallDecoder", + "ZeroFunctionSelector", + "DelegateCallReturnValue", + "ECRecoverMalformedInput", + "SkipEmptyStringLiteral", + "ConstantOptimizerSubtraction", + "IdentityPrecompileReturnIgnored", + ], + "0.4.5": [ + "DirtyBytesArrayToStorage", + "KeccakCaching", + "EmptyByteArrayCopy", + "DynamicArrayCleanup", + "ImplicitConstructorCallvalueCheck", + "TupleAssignmentMultiStackSlotComponents", + "MemoryArrayCreationOverflow", + "privateCanBeOverridden", + "UninitializedFunctionPointerInConstructor_0.4.x", + "IncorrectEventSignatureInLibraries_0.4.x", + "ExpExponentCleanup", + "NestedArrayFunctionCallDecoder", + "ZeroFunctionSelector", + "DelegateCallReturnValue", + "ECRecoverMalformedInput", + "SkipEmptyStringLiteral", + "ConstantOptimizerSubtraction", + "IdentityPrecompileReturnIgnored", + "OptimizerStateKnowledgeNotResetForJumpdest", + ], + "0.4.6": [ + "DirtyBytesArrayToStorage", + "KeccakCaching", + "EmptyByteArrayCopy", + "DynamicArrayCleanup", + "ImplicitConstructorCallvalueCheck", + "TupleAssignmentMultiStackSlotComponents", + "MemoryArrayCreationOverflow", + "privateCanBeOverridden", + "UninitializedFunctionPointerInConstructor_0.4.x", + "IncorrectEventSignatureInLibraries_0.4.x", + "ExpExponentCleanup", + "NestedArrayFunctionCallDecoder", + "ZeroFunctionSelector", + "DelegateCallReturnValue", + "ECRecoverMalformedInput", + "SkipEmptyStringLiteral", + "ConstantOptimizerSubtraction", + "IdentityPrecompileReturnIgnored", + ], + "0.4.7": [ + "DirtyBytesArrayToStorage", + "KeccakCaching", + "EmptyByteArrayCopy", + "DynamicArrayCleanup", + "ImplicitConstructorCallvalueCheck", + "TupleAssignmentMultiStackSlotComponents", + "MemoryArrayCreationOverflow", + "privateCanBeOverridden", + "SignedArrayStorageCopy", + "UninitializedFunctionPointerInConstructor_0.4.x", + "IncorrectEventSignatureInLibraries_0.4.x", + "ExpExponentCleanup", + "NestedArrayFunctionCallDecoder", + "ZeroFunctionSelector", + "DelegateCallReturnValue", + "ECRecoverMalformedInput", + "SkipEmptyStringLiteral", + "ConstantOptimizerSubtraction", + ], + "0.4.8": [ + "DirtyBytesArrayToStorage", + "KeccakCaching", + "EmptyByteArrayCopy", + "DynamicArrayCleanup", + "ImplicitConstructorCallvalueCheck", + "TupleAssignmentMultiStackSlotComponents", + "MemoryArrayCreationOverflow", + "privateCanBeOverridden", + "SignedArrayStorageCopy", + "UninitializedFunctionPointerInConstructor_0.4.x", + "IncorrectEventSignatureInLibraries_0.4.x", + "ExpExponentCleanup", + "NestedArrayFunctionCallDecoder", + "ZeroFunctionSelector", + "DelegateCallReturnValue", + "ECRecoverMalformedInput", + "SkipEmptyStringLiteral", + "ConstantOptimizerSubtraction", + ], + "0.4.9": [ + "DirtyBytesArrayToStorage", + "KeccakCaching", + "EmptyByteArrayCopy", + "DynamicArrayCleanup", + "ImplicitConstructorCallvalueCheck", + "TupleAssignmentMultiStackSlotComponents", + "MemoryArrayCreationOverflow", + "privateCanBeOverridden", + "SignedArrayStorageCopy", + "UninitializedFunctionPointerInConstructor_0.4.x", + "IncorrectEventSignatureInLibraries_0.4.x", + "ExpExponentCleanup", + "NestedArrayFunctionCallDecoder", + "ZeroFunctionSelector", + "DelegateCallReturnValue", + "ECRecoverMalformedInput", + "SkipEmptyStringLiteral", + "ConstantOptimizerSubtraction", + ], + "0.5.0": [ + "DirtyBytesArrayToStorage", + "ABIDecodeTwoDimensionalArrayMemory", + "KeccakCaching", + "EmptyByteArrayCopy", + "DynamicArrayCleanup", + "ImplicitConstructorCallvalueCheck", + "TupleAssignmentMultiStackSlotComponents", + "MemoryArrayCreationOverflow", + "privateCanBeOverridden", + "SignedArrayStorageCopy", + "ABIEncoderV2StorageArrayWithMultiSlotElement", + "DynamicConstructorArgumentsClippedABIV2", + "UninitializedFunctionPointerInConstructor", + "IncorrectEventSignatureInLibraries", + "ABIEncoderV2PackedStorage", + ], + "0.5.1": [ + "DirtyBytesArrayToStorage", + "ABIDecodeTwoDimensionalArrayMemory", + "KeccakCaching", + "EmptyByteArrayCopy", + "DynamicArrayCleanup", + "ImplicitConstructorCallvalueCheck", + "TupleAssignmentMultiStackSlotComponents", + "MemoryArrayCreationOverflow", + "privateCanBeOverridden", + "SignedArrayStorageCopy", + "ABIEncoderV2StorageArrayWithMultiSlotElement", + "DynamicConstructorArgumentsClippedABIV2", + "UninitializedFunctionPointerInConstructor", + "IncorrectEventSignatureInLibraries", + "ABIEncoderV2PackedStorage", + ], + "0.5.10": [ + "AbiReencodingHeadOverflowWithStaticArrayCleanup", + "DirtyBytesArrayToStorage", + "NestedCalldataArrayAbiReencodingSizeValidation", + "ABIDecodeTwoDimensionalArrayMemory", + "KeccakCaching", + "EmptyByteArrayCopy", + "DynamicArrayCleanup", + "ImplicitConstructorCallvalueCheck", + "TupleAssignmentMultiStackSlotComponents", + "MemoryArrayCreationOverflow", + "privateCanBeOverridden", + "YulOptimizerRedundantAssignmentBreakContinue0.5", + "ABIEncoderV2CalldataStructsWithStaticallySizedAndDynamicallyEncodedMembers", + ], + "0.5.11": [ + "AbiReencodingHeadOverflowWithStaticArrayCleanup", + "DirtyBytesArrayToStorage", + "NestedCalldataArrayAbiReencodingSizeValidation", + "ABIDecodeTwoDimensionalArrayMemory", + "KeccakCaching", + "EmptyByteArrayCopy", + "DynamicArrayCleanup", + "ImplicitConstructorCallvalueCheck", + "TupleAssignmentMultiStackSlotComponents", + "MemoryArrayCreationOverflow", + "privateCanBeOverridden", + "YulOptimizerRedundantAssignmentBreakContinue0.5", + ], + "0.5.12": [ + "AbiReencodingHeadOverflowWithStaticArrayCleanup", + "DirtyBytesArrayToStorage", + "NestedCalldataArrayAbiReencodingSizeValidation", + "ABIDecodeTwoDimensionalArrayMemory", + "KeccakCaching", + "EmptyByteArrayCopy", + "DynamicArrayCleanup", + "ImplicitConstructorCallvalueCheck", + "TupleAssignmentMultiStackSlotComponents", + "MemoryArrayCreationOverflow", + "privateCanBeOverridden", + "YulOptimizerRedundantAssignmentBreakContinue0.5", + ], + "0.5.13": [ + "AbiReencodingHeadOverflowWithStaticArrayCleanup", + "DirtyBytesArrayToStorage", + "NestedCalldataArrayAbiReencodingSizeValidation", + "ABIDecodeTwoDimensionalArrayMemory", + "KeccakCaching", + "EmptyByteArrayCopy", + "DynamicArrayCleanup", + "ImplicitConstructorCallvalueCheck", + "TupleAssignmentMultiStackSlotComponents", + "MemoryArrayCreationOverflow", + "privateCanBeOverridden", + "YulOptimizerRedundantAssignmentBreakContinue0.5", + ], + "0.5.14": [ + "AbiReencodingHeadOverflowWithStaticArrayCleanup", + "DirtyBytesArrayToStorage", + "NestedCalldataArrayAbiReencodingSizeValidation", + "ABIDecodeTwoDimensionalArrayMemory", + "KeccakCaching", + "EmptyByteArrayCopy", + "DynamicArrayCleanup", + "MissingEscapingInFormatting", + "ImplicitConstructorCallvalueCheck", + "TupleAssignmentMultiStackSlotComponents", + "MemoryArrayCreationOverflow", + "privateCanBeOverridden", + "YulOptimizerRedundantAssignmentBreakContinue0.5", + "ABIEncoderV2LoopYulOptimizer", + ], + "0.5.15": [ + "AbiReencodingHeadOverflowWithStaticArrayCleanup", + "DirtyBytesArrayToStorage", + "NestedCalldataArrayAbiReencodingSizeValidation", + "ABIDecodeTwoDimensionalArrayMemory", + "KeccakCaching", + "EmptyByteArrayCopy", + "DynamicArrayCleanup", + "MissingEscapingInFormatting", + "ImplicitConstructorCallvalueCheck", + "TupleAssignmentMultiStackSlotComponents", + "MemoryArrayCreationOverflow", + "privateCanBeOverridden", + "YulOptimizerRedundantAssignmentBreakContinue0.5", + ], + "0.5.16": [ + "AbiReencodingHeadOverflowWithStaticArrayCleanup", + "DirtyBytesArrayToStorage", + "NestedCalldataArrayAbiReencodingSizeValidation", + "ABIDecodeTwoDimensionalArrayMemory", + "KeccakCaching", + "EmptyByteArrayCopy", + "DynamicArrayCleanup", + "MissingEscapingInFormatting", + "ImplicitConstructorCallvalueCheck", + "TupleAssignmentMultiStackSlotComponents", + "MemoryArrayCreationOverflow", + "privateCanBeOverridden", + ], + "0.5.17": [ + "AbiReencodingHeadOverflowWithStaticArrayCleanup", + "DirtyBytesArrayToStorage", + "NestedCalldataArrayAbiReencodingSizeValidation", + "ABIDecodeTwoDimensionalArrayMemory", + "KeccakCaching", + "EmptyByteArrayCopy", + "DynamicArrayCleanup", + "MissingEscapingInFormatting", + "ImplicitConstructorCallvalueCheck", + "TupleAssignmentMultiStackSlotComponents", + "MemoryArrayCreationOverflow", + ], + "0.5.2": [ + "DirtyBytesArrayToStorage", + "ABIDecodeTwoDimensionalArrayMemory", + "KeccakCaching", + "EmptyByteArrayCopy", + "DynamicArrayCleanup", + "ImplicitConstructorCallvalueCheck", + "TupleAssignmentMultiStackSlotComponents", + "MemoryArrayCreationOverflow", + "privateCanBeOverridden", + "SignedArrayStorageCopy", + "ABIEncoderV2StorageArrayWithMultiSlotElement", + "DynamicConstructorArgumentsClippedABIV2", + "UninitializedFunctionPointerInConstructor", + "IncorrectEventSignatureInLibraries", + "ABIEncoderV2PackedStorage", + ], + "0.5.3": [ + "DirtyBytesArrayToStorage", + "ABIDecodeTwoDimensionalArrayMemory", + "KeccakCaching", + "EmptyByteArrayCopy", + "DynamicArrayCleanup", + "ImplicitConstructorCallvalueCheck", + "TupleAssignmentMultiStackSlotComponents", + "MemoryArrayCreationOverflow", + "privateCanBeOverridden", + "SignedArrayStorageCopy", + "ABIEncoderV2StorageArrayWithMultiSlotElement", + "DynamicConstructorArgumentsClippedABIV2", + "UninitializedFunctionPointerInConstructor", + "IncorrectEventSignatureInLibraries", + "ABIEncoderV2PackedStorage", + ], + "0.5.4": [ + "DirtyBytesArrayToStorage", + "ABIDecodeTwoDimensionalArrayMemory", + "KeccakCaching", + "EmptyByteArrayCopy", + "DynamicArrayCleanup", + "ImplicitConstructorCallvalueCheck", + "TupleAssignmentMultiStackSlotComponents", + "MemoryArrayCreationOverflow", + "privateCanBeOverridden", + "SignedArrayStorageCopy", + "ABIEncoderV2StorageArrayWithMultiSlotElement", + "DynamicConstructorArgumentsClippedABIV2", + "UninitializedFunctionPointerInConstructor", + "IncorrectEventSignatureInLibraries", + "ABIEncoderV2PackedStorage", + ], + "0.5.5": [ + "DirtyBytesArrayToStorage", + "ABIDecodeTwoDimensionalArrayMemory", + "KeccakCaching", + "EmptyByteArrayCopy", + "DynamicArrayCleanup", + "ImplicitConstructorCallvalueCheck", + "TupleAssignmentMultiStackSlotComponents", + "MemoryArrayCreationOverflow", + "privateCanBeOverridden", + "SignedArrayStorageCopy", + "ABIEncoderV2StorageArrayWithMultiSlotElement", + "DynamicConstructorArgumentsClippedABIV2", + "UninitializedFunctionPointerInConstructor", + "IncorrectEventSignatureInLibraries", + "ABIEncoderV2PackedStorage", + "IncorrectByteInstructionOptimization", + "DoubleShiftSizeOverflow", + ], + "0.5.6": [ + "DirtyBytesArrayToStorage", + "ABIDecodeTwoDimensionalArrayMemory", + "KeccakCaching", + "EmptyByteArrayCopy", + "DynamicArrayCleanup", + "ImplicitConstructorCallvalueCheck", + "TupleAssignmentMultiStackSlotComponents", + "MemoryArrayCreationOverflow", + "privateCanBeOverridden", + "ABIEncoderV2CalldataStructsWithStaticallySizedAndDynamicallyEncodedMembers", + "SignedArrayStorageCopy", + "ABIEncoderV2StorageArrayWithMultiSlotElement", + "DynamicConstructorArgumentsClippedABIV2", + "UninitializedFunctionPointerInConstructor", + "IncorrectEventSignatureInLibraries", + "ABIEncoderV2PackedStorage", + "IncorrectByteInstructionOptimization", + ], + "0.5.7": [ + "DirtyBytesArrayToStorage", + "ABIDecodeTwoDimensionalArrayMemory", + "KeccakCaching", + "EmptyByteArrayCopy", + "DynamicArrayCleanup", + "ImplicitConstructorCallvalueCheck", + "TupleAssignmentMultiStackSlotComponents", + "MemoryArrayCreationOverflow", + "privateCanBeOverridden", + "ABIEncoderV2CalldataStructsWithStaticallySizedAndDynamicallyEncodedMembers", + "SignedArrayStorageCopy", + "ABIEncoderV2StorageArrayWithMultiSlotElement", + "DynamicConstructorArgumentsClippedABIV2", + "UninitializedFunctionPointerInConstructor", + "IncorrectEventSignatureInLibraries", + ], + "0.5.8": [ + "AbiReencodingHeadOverflowWithStaticArrayCleanup", + "DirtyBytesArrayToStorage", + "NestedCalldataArrayAbiReencodingSizeValidation", + "ABIDecodeTwoDimensionalArrayMemory", + "KeccakCaching", + "EmptyByteArrayCopy", + "DynamicArrayCleanup", + "ImplicitConstructorCallvalueCheck", + "TupleAssignmentMultiStackSlotComponents", + "MemoryArrayCreationOverflow", + "privateCanBeOverridden", + "YulOptimizerRedundantAssignmentBreakContinue0.5", + "ABIEncoderV2CalldataStructsWithStaticallySizedAndDynamicallyEncodedMembers", + "SignedArrayStorageCopy", + "ABIEncoderV2StorageArrayWithMultiSlotElement", + "DynamicConstructorArgumentsClippedABIV2", + ], + "0.5.9": [ + "AbiReencodingHeadOverflowWithStaticArrayCleanup", + "DirtyBytesArrayToStorage", + "NestedCalldataArrayAbiReencodingSizeValidation", + "ABIDecodeTwoDimensionalArrayMemory", + "KeccakCaching", + "EmptyByteArrayCopy", + "DynamicArrayCleanup", + "ImplicitConstructorCallvalueCheck", + "TupleAssignmentMultiStackSlotComponents", + "MemoryArrayCreationOverflow", + "privateCanBeOverridden", + "YulOptimizerRedundantAssignmentBreakContinue0.5", + "ABIEncoderV2CalldataStructsWithStaticallySizedAndDynamicallyEncodedMembers", + "SignedArrayStorageCopy", + "ABIEncoderV2StorageArrayWithMultiSlotElement", + ], + "0.6.0": [ + "AbiReencodingHeadOverflowWithStaticArrayCleanup", + "DirtyBytesArrayToStorage", + "NestedCalldataArrayAbiReencodingSizeValidation", + "ABIDecodeTwoDimensionalArrayMemory", + "KeccakCaching", + "EmptyByteArrayCopy", + "DynamicArrayCleanup", + "MissingEscapingInFormatting", + "ArraySliceDynamicallyEncodedBaseType", + "ImplicitConstructorCallvalueCheck", + "TupleAssignmentMultiStackSlotComponents", + "MemoryArrayCreationOverflow", + "YulOptimizerRedundantAssignmentBreakContinue", + ], + "0.6.1": [ + "AbiReencodingHeadOverflowWithStaticArrayCleanup", + "DirtyBytesArrayToStorage", + "NestedCalldataArrayAbiReencodingSizeValidation", + "ABIDecodeTwoDimensionalArrayMemory", + "KeccakCaching", + "EmptyByteArrayCopy", + "DynamicArrayCleanup", + "MissingEscapingInFormatting", + "ArraySliceDynamicallyEncodedBaseType", + "ImplicitConstructorCallvalueCheck", + "TupleAssignmentMultiStackSlotComponents", + "MemoryArrayCreationOverflow", + ], + "0.6.10": [ + "FullInlinerNonExpressionSplitArgumentEvaluationOrder", + "MissingSideEffectsOnSelectorAccess", + "AbiReencodingHeadOverflowWithStaticArrayCleanup", + "DirtyBytesArrayToStorage", + "DataLocationChangeInInternalOverride", + "NestedCalldataArrayAbiReencodingSizeValidation", + "SignedImmutables", + "ABIDecodeTwoDimensionalArrayMemory", + "KeccakCaching", + "EmptyByteArrayCopy", + "DynamicArrayCleanup", + ], + "0.6.11": [ + "FullInlinerNonExpressionSplitArgumentEvaluationOrder", + "MissingSideEffectsOnSelectorAccess", + "AbiReencodingHeadOverflowWithStaticArrayCleanup", + "DirtyBytesArrayToStorage", + "DataLocationChangeInInternalOverride", + "NestedCalldataArrayAbiReencodingSizeValidation", + "SignedImmutables", + "ABIDecodeTwoDimensionalArrayMemory", + "KeccakCaching", + "EmptyByteArrayCopy", + "DynamicArrayCleanup", + ], + "0.6.12": [ + "FullInlinerNonExpressionSplitArgumentEvaluationOrder", + "MissingSideEffectsOnSelectorAccess", + "AbiReencodingHeadOverflowWithStaticArrayCleanup", + "DirtyBytesArrayToStorage", + "DataLocationChangeInInternalOverride", + "NestedCalldataArrayAbiReencodingSizeValidation", + "SignedImmutables", + "ABIDecodeTwoDimensionalArrayMemory", + "KeccakCaching", + "EmptyByteArrayCopy", + "DynamicArrayCleanup", + ], + "0.6.2": [ + "MissingSideEffectsOnSelectorAccess", + "AbiReencodingHeadOverflowWithStaticArrayCleanup", + "DirtyBytesArrayToStorage", + "NestedCalldataArrayAbiReencodingSizeValidation", + "ABIDecodeTwoDimensionalArrayMemory", + "KeccakCaching", + "EmptyByteArrayCopy", + "DynamicArrayCleanup", + "MissingEscapingInFormatting", + "ArraySliceDynamicallyEncodedBaseType", + "ImplicitConstructorCallvalueCheck", + "TupleAssignmentMultiStackSlotComponents", + "MemoryArrayCreationOverflow", + ], + "0.6.3": [ + "MissingSideEffectsOnSelectorAccess", + "AbiReencodingHeadOverflowWithStaticArrayCleanup", + "DirtyBytesArrayToStorage", + "NestedCalldataArrayAbiReencodingSizeValidation", + "ABIDecodeTwoDimensionalArrayMemory", + "KeccakCaching", + "EmptyByteArrayCopy", + "DynamicArrayCleanup", + "MissingEscapingInFormatting", + "ArraySliceDynamicallyEncodedBaseType", + "ImplicitConstructorCallvalueCheck", + "TupleAssignmentMultiStackSlotComponents", + "MemoryArrayCreationOverflow", + ], + "0.6.4": [ + "MissingSideEffectsOnSelectorAccess", + "AbiReencodingHeadOverflowWithStaticArrayCleanup", + "DirtyBytesArrayToStorage", + "NestedCalldataArrayAbiReencodingSizeValidation", + "ABIDecodeTwoDimensionalArrayMemory", + "KeccakCaching", + "EmptyByteArrayCopy", + "DynamicArrayCleanup", + "MissingEscapingInFormatting", + "ArraySliceDynamicallyEncodedBaseType", + "ImplicitConstructorCallvalueCheck", + "TupleAssignmentMultiStackSlotComponents", + "MemoryArrayCreationOverflow", + ], + "0.6.5": [ + "MissingSideEffectsOnSelectorAccess", + "AbiReencodingHeadOverflowWithStaticArrayCleanup", + "DirtyBytesArrayToStorage", + "NestedCalldataArrayAbiReencodingSizeValidation", + "SignedImmutables", + "ABIDecodeTwoDimensionalArrayMemory", + "KeccakCaching", + "EmptyByteArrayCopy", + "DynamicArrayCleanup", + "MissingEscapingInFormatting", + "ArraySliceDynamicallyEncodedBaseType", + "ImplicitConstructorCallvalueCheck", + "TupleAssignmentMultiStackSlotComponents", + ], + "0.6.6": [ + "MissingSideEffectsOnSelectorAccess", + "AbiReencodingHeadOverflowWithStaticArrayCleanup", + "DirtyBytesArrayToStorage", + "NestedCalldataArrayAbiReencodingSizeValidation", + "SignedImmutables", + "ABIDecodeTwoDimensionalArrayMemory", + "KeccakCaching", + "EmptyByteArrayCopy", + "DynamicArrayCleanup", + "MissingEscapingInFormatting", + "ArraySliceDynamicallyEncodedBaseType", + "ImplicitConstructorCallvalueCheck", + ], + "0.6.7": [ + "FullInlinerNonExpressionSplitArgumentEvaluationOrder", + "MissingSideEffectsOnSelectorAccess", + "AbiReencodingHeadOverflowWithStaticArrayCleanup", + "DirtyBytesArrayToStorage", + "NestedCalldataArrayAbiReencodingSizeValidation", + "SignedImmutables", + "ABIDecodeTwoDimensionalArrayMemory", + "KeccakCaching", + "EmptyByteArrayCopy", + "DynamicArrayCleanup", + "MissingEscapingInFormatting", + "ArraySliceDynamicallyEncodedBaseType", + "ImplicitConstructorCallvalueCheck", + ], + "0.6.8": [ + "FullInlinerNonExpressionSplitArgumentEvaluationOrder", + "MissingSideEffectsOnSelectorAccess", + "AbiReencodingHeadOverflowWithStaticArrayCleanup", + "DirtyBytesArrayToStorage", + "NestedCalldataArrayAbiReencodingSizeValidation", + "SignedImmutables", + "ABIDecodeTwoDimensionalArrayMemory", + "KeccakCaching", + "EmptyByteArrayCopy", + "DynamicArrayCleanup", + ], + "0.6.9": [ + "FullInlinerNonExpressionSplitArgumentEvaluationOrder", + "MissingSideEffectsOnSelectorAccess", + "AbiReencodingHeadOverflowWithStaticArrayCleanup", + "DirtyBytesArrayToStorage", + "DataLocationChangeInInternalOverride", + "NestedCalldataArrayAbiReencodingSizeValidation", + "SignedImmutables", + "ABIDecodeTwoDimensionalArrayMemory", + "KeccakCaching", + "EmptyByteArrayCopy", + "DynamicArrayCleanup", + "UsingForCalldata", + ], + "0.7.0": [ + "FullInlinerNonExpressionSplitArgumentEvaluationOrder", + "MissingSideEffectsOnSelectorAccess", + "AbiReencodingHeadOverflowWithStaticArrayCleanup", + "DirtyBytesArrayToStorage", + "DataLocationChangeInInternalOverride", + "NestedCalldataArrayAbiReencodingSizeValidation", + "SignedImmutables", + "ABIDecodeTwoDimensionalArrayMemory", + "KeccakCaching", + "EmptyByteArrayCopy", + "DynamicArrayCleanup", + ], + "0.7.1": [ + "FullInlinerNonExpressionSplitArgumentEvaluationOrder", + "MissingSideEffectsOnSelectorAccess", + "AbiReencodingHeadOverflowWithStaticArrayCleanup", + "DirtyBytesArrayToStorage", + "DataLocationChangeInInternalOverride", + "NestedCalldataArrayAbiReencodingSizeValidation", + "SignedImmutables", + "ABIDecodeTwoDimensionalArrayMemory", + "KeccakCaching", + "EmptyByteArrayCopy", + "DynamicArrayCleanup", + "FreeFunctionRedefinition", + ], + "0.7.2": [ + "FullInlinerNonExpressionSplitArgumentEvaluationOrder", + "MissingSideEffectsOnSelectorAccess", + "AbiReencodingHeadOverflowWithStaticArrayCleanup", + "DirtyBytesArrayToStorage", + "DataLocationChangeInInternalOverride", + "NestedCalldataArrayAbiReencodingSizeValidation", + "SignedImmutables", + "ABIDecodeTwoDimensionalArrayMemory", + "KeccakCaching", + "EmptyByteArrayCopy", + "DynamicArrayCleanup", + ], + "0.7.3": [ + "FullInlinerNonExpressionSplitArgumentEvaluationOrder", + "MissingSideEffectsOnSelectorAccess", + "AbiReencodingHeadOverflowWithStaticArrayCleanup", + "DirtyBytesArrayToStorage", + "DataLocationChangeInInternalOverride", + "NestedCalldataArrayAbiReencodingSizeValidation", + "SignedImmutables", + "ABIDecodeTwoDimensionalArrayMemory", + "KeccakCaching", + "EmptyByteArrayCopy", + ], + "0.7.4": [ + "FullInlinerNonExpressionSplitArgumentEvaluationOrder", + "MissingSideEffectsOnSelectorAccess", + "AbiReencodingHeadOverflowWithStaticArrayCleanup", + "DirtyBytesArrayToStorage", + "DataLocationChangeInInternalOverride", + "NestedCalldataArrayAbiReencodingSizeValidation", + "SignedImmutables", + "ABIDecodeTwoDimensionalArrayMemory", + "KeccakCaching", + ], + "0.7.5": [ + "FullInlinerNonExpressionSplitArgumentEvaluationOrder", + "MissingSideEffectsOnSelectorAccess", + "AbiReencodingHeadOverflowWithStaticArrayCleanup", + "DirtyBytesArrayToStorage", + "DataLocationChangeInInternalOverride", + "NestedCalldataArrayAbiReencodingSizeValidation", + "SignedImmutables", + "ABIDecodeTwoDimensionalArrayMemory", + "KeccakCaching", + ], + "0.7.6": [ + "FullInlinerNonExpressionSplitArgumentEvaluationOrder", + "MissingSideEffectsOnSelectorAccess", + "AbiReencodingHeadOverflowWithStaticArrayCleanup", + "DirtyBytesArrayToStorage", + "DataLocationChangeInInternalOverride", + "NestedCalldataArrayAbiReencodingSizeValidation", + "SignedImmutables", + "ABIDecodeTwoDimensionalArrayMemory", + "KeccakCaching", + ], + "0.8.0": [ + "FullInlinerNonExpressionSplitArgumentEvaluationOrder", + "MissingSideEffectsOnSelectorAccess", + "AbiReencodingHeadOverflowWithStaticArrayCleanup", + "DirtyBytesArrayToStorage", + "DataLocationChangeInInternalOverride", + "NestedCalldataArrayAbiReencodingSizeValidation", + "SignedImmutables", + "ABIDecodeTwoDimensionalArrayMemory", + "KeccakCaching", + ], + "0.8.1": [ + "FullInlinerNonExpressionSplitArgumentEvaluationOrder", + "MissingSideEffectsOnSelectorAccess", + "AbiReencodingHeadOverflowWithStaticArrayCleanup", + "DirtyBytesArrayToStorage", + "DataLocationChangeInInternalOverride", + "NestedCalldataArrayAbiReencodingSizeValidation", + "SignedImmutables", + "ABIDecodeTwoDimensionalArrayMemory", + "KeccakCaching", + ], + "0.8.10": [ + "VerbatimInvalidDeduplication", + "FullInlinerNonExpressionSplitArgumentEvaluationOrder", + "MissingSideEffectsOnSelectorAccess", + "AbiReencodingHeadOverflowWithStaticArrayCleanup", + "DirtyBytesArrayToStorage", + "DataLocationChangeInInternalOverride", + "NestedCalldataArrayAbiReencodingSizeValidation", + ], + "0.8.11": [ + "VerbatimInvalidDeduplication", + "FullInlinerNonExpressionSplitArgumentEvaluationOrder", + "MissingSideEffectsOnSelectorAccess", + "AbiReencodingHeadOverflowWithStaticArrayCleanup", + "DirtyBytesArrayToStorage", + "DataLocationChangeInInternalOverride", + "NestedCalldataArrayAbiReencodingSizeValidation", + "AbiEncodeCallLiteralAsFixedBytesBug", + ], + "0.8.12": [ + "VerbatimInvalidDeduplication", + "FullInlinerNonExpressionSplitArgumentEvaluationOrder", + "MissingSideEffectsOnSelectorAccess", + "AbiReencodingHeadOverflowWithStaticArrayCleanup", + "DirtyBytesArrayToStorage", + "DataLocationChangeInInternalOverride", + "NestedCalldataArrayAbiReencodingSizeValidation", + "AbiEncodeCallLiteralAsFixedBytesBug", + ], + "0.8.13": [ + "VerbatimInvalidDeduplication", + "FullInlinerNonExpressionSplitArgumentEvaluationOrder", + "MissingSideEffectsOnSelectorAccess", + "StorageWriteRemovalBeforeConditionalTermination", + "AbiReencodingHeadOverflowWithStaticArrayCleanup", + "DirtyBytesArrayToStorage", + "InlineAssemblyMemorySideEffects", + "DataLocationChangeInInternalOverride", + "NestedCalldataArrayAbiReencodingSizeValidation", + ], + "0.8.14": [ + "VerbatimInvalidDeduplication", + "FullInlinerNonExpressionSplitArgumentEvaluationOrder", + "MissingSideEffectsOnSelectorAccess", + "StorageWriteRemovalBeforeConditionalTermination", + "AbiReencodingHeadOverflowWithStaticArrayCleanup", + "DirtyBytesArrayToStorage", + "InlineAssemblyMemorySideEffects", + ], + "0.8.15": [ + "VerbatimInvalidDeduplication", + "FullInlinerNonExpressionSplitArgumentEvaluationOrder", + "MissingSideEffectsOnSelectorAccess", + "StorageWriteRemovalBeforeConditionalTermination", + "AbiReencodingHeadOverflowWithStaticArrayCleanup", + ], + "0.8.16": [ + "VerbatimInvalidDeduplication", + "FullInlinerNonExpressionSplitArgumentEvaluationOrder", + "MissingSideEffectsOnSelectorAccess", + "StorageWriteRemovalBeforeConditionalTermination", + ], + "0.8.17": [ + "VerbatimInvalidDeduplication", + "FullInlinerNonExpressionSplitArgumentEvaluationOrder", + "MissingSideEffectsOnSelectorAccess", + ], + "0.8.18": [ + "VerbatimInvalidDeduplication", + "FullInlinerNonExpressionSplitArgumentEvaluationOrder", + "MissingSideEffectsOnSelectorAccess", + ], + "0.8.19": [ + "VerbatimInvalidDeduplication", + "FullInlinerNonExpressionSplitArgumentEvaluationOrder", + "MissingSideEffectsOnSelectorAccess", + ], + "0.8.2": [ + "FullInlinerNonExpressionSplitArgumentEvaluationOrder", + "MissingSideEffectsOnSelectorAccess", + "AbiReencodingHeadOverflowWithStaticArrayCleanup", + "DirtyBytesArrayToStorage", + "DataLocationChangeInInternalOverride", + "NestedCalldataArrayAbiReencodingSizeValidation", + "SignedImmutables", + "ABIDecodeTwoDimensionalArrayMemory", + "KeccakCaching", + ], + "0.8.20": [ + "VerbatimInvalidDeduplication", + "FullInlinerNonExpressionSplitArgumentEvaluationOrder", + "MissingSideEffectsOnSelectorAccess", + ], + "0.8.21": ["VerbatimInvalidDeduplication"], + "0.8.22": ["VerbatimInvalidDeduplication"], + "0.8.23": [], + "0.8.24": [], + "0.8.3": [ + "FullInlinerNonExpressionSplitArgumentEvaluationOrder", + "MissingSideEffectsOnSelectorAccess", + "AbiReencodingHeadOverflowWithStaticArrayCleanup", + "DirtyBytesArrayToStorage", + "DataLocationChangeInInternalOverride", + "NestedCalldataArrayAbiReencodingSizeValidation", + "SignedImmutables", + "ABIDecodeTwoDimensionalArrayMemory", + ], + "0.8.4": [ + "FullInlinerNonExpressionSplitArgumentEvaluationOrder", + "MissingSideEffectsOnSelectorAccess", + "AbiReencodingHeadOverflowWithStaticArrayCleanup", + "DirtyBytesArrayToStorage", + "DataLocationChangeInInternalOverride", + "NestedCalldataArrayAbiReencodingSizeValidation", + "SignedImmutables", + ], + "0.8.5": [ + "VerbatimInvalidDeduplication", + "FullInlinerNonExpressionSplitArgumentEvaluationOrder", + "MissingSideEffectsOnSelectorAccess", + "AbiReencodingHeadOverflowWithStaticArrayCleanup", + "DirtyBytesArrayToStorage", + "DataLocationChangeInInternalOverride", + "NestedCalldataArrayAbiReencodingSizeValidation", + "SignedImmutables", + ], + "0.8.6": [ + "VerbatimInvalidDeduplication", + "FullInlinerNonExpressionSplitArgumentEvaluationOrder", + "MissingSideEffectsOnSelectorAccess", + "AbiReencodingHeadOverflowWithStaticArrayCleanup", + "DirtyBytesArrayToStorage", + "DataLocationChangeInInternalOverride", + "NestedCalldataArrayAbiReencodingSizeValidation", + "SignedImmutables", + ], + "0.8.7": [ + "VerbatimInvalidDeduplication", + "FullInlinerNonExpressionSplitArgumentEvaluationOrder", + "MissingSideEffectsOnSelectorAccess", + "AbiReencodingHeadOverflowWithStaticArrayCleanup", + "DirtyBytesArrayToStorage", + "DataLocationChangeInInternalOverride", + "NestedCalldataArrayAbiReencodingSizeValidation", + "SignedImmutables", + ], + "0.8.8": [ + "VerbatimInvalidDeduplication", + "FullInlinerNonExpressionSplitArgumentEvaluationOrder", + "MissingSideEffectsOnSelectorAccess", + "AbiReencodingHeadOverflowWithStaticArrayCleanup", + "DirtyBytesArrayToStorage", + "DataLocationChangeInInternalOverride", + "NestedCalldataArrayAbiReencodingSizeValidation", + "UserDefinedValueTypesBug", + "SignedImmutables", + ], + "0.8.9": [ + "VerbatimInvalidDeduplication", + "FullInlinerNonExpressionSplitArgumentEvaluationOrder", + "MissingSideEffectsOnSelectorAccess", + "AbiReencodingHeadOverflowWithStaticArrayCleanup", + "DirtyBytesArrayToStorage", + "DataLocationChangeInInternalOverride", + "NestedCalldataArrayAbiReencodingSizeValidation", + ], +} diff --git a/tests/e2e/detectors/snapshots/detectors__detector_ConstantPragma_0_4_25_pragma_0_4_25_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_ConstantPragma_0_4_25_pragma_0_4_25_sol__0.txt index 0d0deaae0f..717ca87499 100644 --- a/tests/e2e/detectors/snapshots/detectors__detector_ConstantPragma_0_4_25_pragma_0_4_25_sol__0.txt +++ b/tests/e2e/detectors/snapshots/detectors__detector_ConstantPragma_0_4_25_pragma_0_4_25_sol__0.txt @@ -1,5 +1,6 @@ -Different versions of Solidity are used: - - Version used: ['^0.4.24', '^0.4.25'] - - ^0.4.24 (tests/e2e/detectors/test_data/pragma/0.4.25/pragma.0.4.24.sol#1) - - ^0.4.25 (tests/e2e/detectors/test_data/pragma/0.4.25/pragma.0.4.25.sol#1) +2 different versions of Solidity are used: + - Version constraint ^0.4.25 is used by: + - tests/e2e/detectors/test_data/pragma/0.4.25/pragma.0.4.25.sol#1 + - Version constraint ^0.4.24 is used by: + - tests/e2e/detectors/test_data/pragma/0.4.25/pragma.0.4.24.sol#1 diff --git a/tests/e2e/detectors/snapshots/detectors__detector_ConstantPragma_0_5_16_pragma_0_5_16_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_ConstantPragma_0_5_16_pragma_0_5_16_sol__0.txt index a619f1ed07..ae5543f3d5 100644 --- a/tests/e2e/detectors/snapshots/detectors__detector_ConstantPragma_0_5_16_pragma_0_5_16_sol__0.txt +++ b/tests/e2e/detectors/snapshots/detectors__detector_ConstantPragma_0_5_16_pragma_0_5_16_sol__0.txt @@ -1,5 +1,6 @@ -Different versions of Solidity are used: - - Version used: ['^0.5.15', '^0.5.16'] - - ^0.5.15 (tests/e2e/detectors/test_data/pragma/0.5.16/pragma.0.5.15.sol#1) - - ^0.5.16 (tests/e2e/detectors/test_data/pragma/0.5.16/pragma.0.5.16.sol#1) +2 different versions of Solidity are used: + - Version constraint ^0.5.16 is used by: + - tests/e2e/detectors/test_data/pragma/0.5.16/pragma.0.5.16.sol#1 + - Version constraint ^0.5.15 is used by: + - tests/e2e/detectors/test_data/pragma/0.5.16/pragma.0.5.15.sol#1 diff --git a/tests/e2e/detectors/snapshots/detectors__detector_ConstantPragma_0_6_11_pragma_0_6_11_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_ConstantPragma_0_6_11_pragma_0_6_11_sol__0.txt index af468f3ba1..f8ccb74bb9 100644 --- a/tests/e2e/detectors/snapshots/detectors__detector_ConstantPragma_0_6_11_pragma_0_6_11_sol__0.txt +++ b/tests/e2e/detectors/snapshots/detectors__detector_ConstantPragma_0_6_11_pragma_0_6_11_sol__0.txt @@ -1,5 +1,6 @@ -Different versions of Solidity are used: - - Version used: ['^0.6.10', '^0.6.11'] - - ^0.6.10 (tests/e2e/detectors/test_data/pragma/0.6.11/pragma.0.6.10.sol#1) - - ^0.6.11 (tests/e2e/detectors/test_data/pragma/0.6.11/pragma.0.6.11.sol#1) +2 different versions of Solidity are used: + - Version constraint ^0.6.11 is used by: + - tests/e2e/detectors/test_data/pragma/0.6.11/pragma.0.6.11.sol#1 + - Version constraint ^0.6.10 is used by: + - tests/e2e/detectors/test_data/pragma/0.6.11/pragma.0.6.10.sol#1 diff --git a/tests/e2e/detectors/snapshots/detectors__detector_ConstantPragma_0_7_6_pragma_0_7_6_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_ConstantPragma_0_7_6_pragma_0_7_6_sol__0.txt index 83b79b494e..4c1a821a3d 100644 --- a/tests/e2e/detectors/snapshots/detectors__detector_ConstantPragma_0_7_6_pragma_0_7_6_sol__0.txt +++ b/tests/e2e/detectors/snapshots/detectors__detector_ConstantPragma_0_7_6_pragma_0_7_6_sol__0.txt @@ -1,5 +1,6 @@ -Different versions of Solidity are used: - - Version used: ['^0.7.5', '^0.7.6'] - - ^0.7.5 (tests/e2e/detectors/test_data/pragma/0.7.6/pragma.0.7.5.sol#1) - - ^0.7.6 (tests/e2e/detectors/test_data/pragma/0.7.6/pragma.0.7.6.sol#1) +2 different versions of Solidity are used: + - Version constraint ^0.7.6 is used by: + - tests/e2e/detectors/test_data/pragma/0.7.6/pragma.0.7.6.sol#1 + - Version constraint ^0.7.5 is used by: + - tests/e2e/detectors/test_data/pragma/0.7.6/pragma.0.7.5.sol#1 diff --git a/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_4_25_static_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_4_25_static_sol__0.txt index a1a384559d..37df4af201 100644 --- a/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_4_25_static_sol__0.txt +++ b/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_4_25_static_sol__0.txt @@ -1,4 +1,21 @@ -solc-0.4.25 is not recommended for deployment +Version constraint 0.4.25 contain known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html) + - DirtyBytesArrayToStorage + - ABIDecodeTwoDimensionalArrayMemory + - KeccakCaching + - EmptyByteArrayCopy + - DynamicArrayCleanup + - ImplicitConstructorCallvalueCheck + - TupleAssignmentMultiStackSlotComponents + - MemoryArrayCreationOverflow + - privateCanBeOverridden + - SignedArrayStorageCopy + - ABIEncoderV2StorageArrayWithMultiSlotElement + - DynamicConstructorArgumentsClippedABIV2 + - UninitializedFunctionPointerInConstructor_0.4.x + - IncorrectEventSignatureInLibraries_0.4.x + - ABIEncoderV2PackedStorage_0.4.x. + It is used by: + - tests/e2e/detectors/test_data/solc-version/0.4.25/static.sol#1 -Pragma version0.4.25 (tests/e2e/detectors/test_data/solc-version/0.4.25/static.sol#1) allows old versions +solc-0.4.25 is an outdated solc version. Use a more recent version (at least 0.8.0), if possible. diff --git a/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_5_14_static_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_5_14_static_sol__0.txt index c9f67a00d9..622fd980ea 100644 --- a/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_5_14_static_sol__0.txt +++ b/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_5_14_static_sol__0.txt @@ -1,3 +1,20 @@ -Pragma version0.5.14 (tests/e2e/detectors/test_data/solc-version/0.5.14/static.sol#1) is known to contain severe issues (https://solidity.readthedocs.io/en/latest/bugs.html) +Version constraint 0.5.14 contain known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html) + - AbiReencodingHeadOverflowWithStaticArrayCleanup + - DirtyBytesArrayToStorage + - NestedCalldataArrayAbiReencodingSizeValidation + - ABIDecodeTwoDimensionalArrayMemory + - KeccakCaching + - EmptyByteArrayCopy + - DynamicArrayCleanup + - MissingEscapingInFormatting + - ImplicitConstructorCallvalueCheck + - TupleAssignmentMultiStackSlotComponents + - MemoryArrayCreationOverflow + - privateCanBeOverridden + - YulOptimizerRedundantAssignmentBreakContinue0.5 + - ABIEncoderV2LoopYulOptimizer. + It is used by: + - tests/e2e/detectors/test_data/solc-version/0.5.14/static.sol#1 + +solc-0.5.14 is an outdated solc version. Use a more recent version (at least 0.8.0), if possible. -solc-0.5.14 is known to contain severe issues (https://solidity.readthedocs.io/en/latest/bugs.html) diff --git a/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_5_16_dynamic_1_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_5_16_dynamic_1_sol__0.txt index eaf6d3bef8..56db78fcc7 100644 --- a/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_5_16_dynamic_1_sol__0.txt +++ b/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_5_16_dynamic_1_sol__0.txt @@ -1,4 +1,19 @@ -Pragma version^0.5.15 (tests/e2e/detectors/test_data/solc-version/0.5.16/dynamic_1.sol#1) allows old versions +Version constraint ^0.5.15 contain known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html) + - AbiReencodingHeadOverflowWithStaticArrayCleanup + - DirtyBytesArrayToStorage + - NestedCalldataArrayAbiReencodingSizeValidation + - ABIDecodeTwoDimensionalArrayMemory + - KeccakCaching + - EmptyByteArrayCopy + - DynamicArrayCleanup + - MissingEscapingInFormatting + - ImplicitConstructorCallvalueCheck + - TupleAssignmentMultiStackSlotComponents + - MemoryArrayCreationOverflow + - privateCanBeOverridden + - YulOptimizerRedundantAssignmentBreakContinue0.5. + It is used by: + - tests/e2e/detectors/test_data/solc-version/0.5.16/dynamic_1.sol#1 -solc-0.5.16 is not recommended for deployment +solc-0.5.16 is an outdated solc version. Use a more recent version (at least 0.8.0), if possible. diff --git a/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_5_16_dynamic_2_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_5_16_dynamic_2_sol__0.txt index 4fbde70080..49a96b6b1d 100644 --- a/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_5_16_dynamic_2_sol__0.txt +++ b/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_5_16_dynamic_2_sol__0.txt @@ -1,4 +1,21 @@ -Pragma version>=0.5.0<0.6.0 (tests/e2e/detectors/test_data/solc-version/0.5.16/dynamic_2.sol#1) allows old versions +Version constraint >=0.5.0<0.6.0 contain known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html) + - DirtyBytesArrayToStorage + - ABIDecodeTwoDimensionalArrayMemory + - KeccakCaching + - EmptyByteArrayCopy + - DynamicArrayCleanup + - ImplicitConstructorCallvalueCheck + - TupleAssignmentMultiStackSlotComponents + - MemoryArrayCreationOverflow + - privateCanBeOverridden + - SignedArrayStorageCopy + - ABIEncoderV2StorageArrayWithMultiSlotElement + - DynamicConstructorArgumentsClippedABIV2 + - UninitializedFunctionPointerInConstructor + - IncorrectEventSignatureInLibraries + - ABIEncoderV2PackedStorage. + It is used by: + - tests/e2e/detectors/test_data/solc-version/0.5.16/dynamic_2.sol#1 -solc-0.5.16 is not recommended for deployment +solc-0.5.16 is an outdated solc version. Use a more recent version (at least 0.8.0), if possible. diff --git a/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_5_16_static_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_5_16_static_sol__0.txt index 3348b38bfe..b661db49b1 100644 --- a/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_5_16_static_sol__0.txt +++ b/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_5_16_static_sol__0.txt @@ -1,4 +1,18 @@ -solc-0.5.16 is not recommended for deployment +Version constraint 0.5.16 contain known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html) + - AbiReencodingHeadOverflowWithStaticArrayCleanup + - DirtyBytesArrayToStorage + - NestedCalldataArrayAbiReencodingSizeValidation + - ABIDecodeTwoDimensionalArrayMemory + - KeccakCaching + - EmptyByteArrayCopy + - DynamicArrayCleanup + - MissingEscapingInFormatting + - ImplicitConstructorCallvalueCheck + - TupleAssignmentMultiStackSlotComponents + - MemoryArrayCreationOverflow + - privateCanBeOverridden. + It is used by: + - tests/e2e/detectors/test_data/solc-version/0.5.16/static.sol#1 -Pragma version0.5.16 (tests/e2e/detectors/test_data/solc-version/0.5.16/static.sol#1) allows old versions +solc-0.5.16 is an outdated solc version. Use a more recent version (at least 0.8.0), if possible. diff --git a/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_6_10_static_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_6_10_static_sol__0.txt index b019ea235c..b6392c5579 100644 --- a/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_6_10_static_sol__0.txt +++ b/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_6_10_static_sol__0.txt @@ -1,4 +1,17 @@ -solc-0.6.10 is not recommended for deployment +solc-0.6.10 is an outdated solc version. Use a more recent version (at least 0.8.0), if possible. -Pragma version0.6.10 (tests/e2e/detectors/test_data/solc-version/0.6.10/static.sol#1) allows old versions +Version constraint 0.6.10 contain known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html) + - FullInlinerNonExpressionSplitArgumentEvaluationOrder + - MissingSideEffectsOnSelectorAccess + - AbiReencodingHeadOverflowWithStaticArrayCleanup + - DirtyBytesArrayToStorage + - DataLocationChangeInInternalOverride + - NestedCalldataArrayAbiReencodingSizeValidation + - SignedImmutables + - ABIDecodeTwoDimensionalArrayMemory + - KeccakCaching + - EmptyByteArrayCopy + - DynamicArrayCleanup. + It is used by: + - tests/e2e/detectors/test_data/solc-version/0.6.10/static.sol#1 diff --git a/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_6_11_dynamic_1_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_6_11_dynamic_1_sol__0.txt index d9882ee921..3ef69c4da0 100644 --- a/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_6_11_dynamic_1_sol__0.txt +++ b/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_6_11_dynamic_1_sol__0.txt @@ -1,4 +1,17 @@ -solc-0.6.11 is not recommended for deployment +Version constraint ^0.6.10 contain known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html) + - FullInlinerNonExpressionSplitArgumentEvaluationOrder + - MissingSideEffectsOnSelectorAccess + - AbiReencodingHeadOverflowWithStaticArrayCleanup + - DirtyBytesArrayToStorage + - DataLocationChangeInInternalOverride + - NestedCalldataArrayAbiReencodingSizeValidation + - SignedImmutables + - ABIDecodeTwoDimensionalArrayMemory + - KeccakCaching + - EmptyByteArrayCopy + - DynamicArrayCleanup. + It is used by: + - tests/e2e/detectors/test_data/solc-version/0.6.11/dynamic_1.sol#1 -Pragma version^0.6.10 (tests/e2e/detectors/test_data/solc-version/0.6.11/dynamic_1.sol#1) allows old versions +solc-0.6.11 is an outdated solc version. Use a more recent version (at least 0.8.0), if possible. diff --git a/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_6_11_dynamic_2_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_6_11_dynamic_2_sol__0.txt index 9e0b51f1ce..244e807d69 100644 --- a/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_6_11_dynamic_2_sol__0.txt +++ b/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_6_11_dynamic_2_sol__0.txt @@ -1,4 +1,19 @@ -Pragma version>=0.6.0<0.7.0 (tests/e2e/detectors/test_data/solc-version/0.6.11/dynamic_2.sol#1) allows old versions +Version constraint >=0.6.0<0.7.0 contain known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html) + - AbiReencodingHeadOverflowWithStaticArrayCleanup + - DirtyBytesArrayToStorage + - NestedCalldataArrayAbiReencodingSizeValidation + - ABIDecodeTwoDimensionalArrayMemory + - KeccakCaching + - EmptyByteArrayCopy + - DynamicArrayCleanup + - MissingEscapingInFormatting + - ArraySliceDynamicallyEncodedBaseType + - ImplicitConstructorCallvalueCheck + - TupleAssignmentMultiStackSlotComponents + - MemoryArrayCreationOverflow + - YulOptimizerRedundantAssignmentBreakContinue. + It is used by: + - tests/e2e/detectors/test_data/solc-version/0.6.11/dynamic_2.sol#1 -solc-0.6.11 is not recommended for deployment +solc-0.6.11 is an outdated solc version. Use a more recent version (at least 0.8.0), if possible. diff --git a/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_6_11_static_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_6_11_static_sol__0.txt index 5dfddac9ed..c44f975c3f 100644 --- a/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_6_11_static_sol__0.txt +++ b/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_6_11_static_sol__0.txt @@ -1,4 +1,17 @@ -Pragma version0.6.11 (tests/e2e/detectors/test_data/solc-version/0.6.11/static.sol#1) allows old versions +Version constraint 0.6.11 contain known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html) + - FullInlinerNonExpressionSplitArgumentEvaluationOrder + - MissingSideEffectsOnSelectorAccess + - AbiReencodingHeadOverflowWithStaticArrayCleanup + - DirtyBytesArrayToStorage + - DataLocationChangeInInternalOverride + - NestedCalldataArrayAbiReencodingSizeValidation + - SignedImmutables + - ABIDecodeTwoDimensionalArrayMemory + - KeccakCaching + - EmptyByteArrayCopy + - DynamicArrayCleanup. + It is used by: + - tests/e2e/detectors/test_data/solc-version/0.6.11/static.sol#1 -solc-0.6.11 is not recommended for deployment +solc-0.6.11 is an outdated solc version. Use a more recent version (at least 0.8.0), if possible. diff --git a/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_7_4_static_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_7_4_static_sol__0.txt index 954505f8c6..77f1c40972 100644 --- a/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_7_4_static_sol__0.txt +++ b/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_7_4_static_sol__0.txt @@ -1,4 +1,15 @@ -Pragma version0.7.4 (tests/e2e/detectors/test_data/solc-version/0.7.4/static.sol#1) allows old versions +Version constraint 0.7.4 contain known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html) + - FullInlinerNonExpressionSplitArgumentEvaluationOrder + - MissingSideEffectsOnSelectorAccess + - AbiReencodingHeadOverflowWithStaticArrayCleanup + - DirtyBytesArrayToStorage + - DataLocationChangeInInternalOverride + - NestedCalldataArrayAbiReencodingSizeValidation + - SignedImmutables + - ABIDecodeTwoDimensionalArrayMemory + - KeccakCaching. + It is used by: + - tests/e2e/detectors/test_data/solc-version/0.7.4/static.sol#1 -solc-0.7.4 is not recommended for deployment +solc-0.7.4 is an outdated solc version. Use a more recent version (at least 0.8.0), if possible. diff --git a/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_7_6_dynamic_1_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_7_6_dynamic_1_sol__0.txt index 157db71ce2..720dd24260 100644 --- a/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_7_6_dynamic_1_sol__0.txt +++ b/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_7_6_dynamic_1_sol__0.txt @@ -1,4 +1,15 @@ -Pragma version^0.7.4 (tests/e2e/detectors/test_data/solc-version/0.7.6/dynamic_1.sol#1) allows old versions +solc-0.7.6 is an outdated solc version. Use a more recent version (at least 0.8.0), if possible. -solc-0.7.6 is not recommended for deployment +Version constraint ^0.7.4 contain known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html) + - FullInlinerNonExpressionSplitArgumentEvaluationOrder + - MissingSideEffectsOnSelectorAccess + - AbiReencodingHeadOverflowWithStaticArrayCleanup + - DirtyBytesArrayToStorage + - DataLocationChangeInInternalOverride + - NestedCalldataArrayAbiReencodingSizeValidation + - SignedImmutables + - ABIDecodeTwoDimensionalArrayMemory + - KeccakCaching. + It is used by: + - tests/e2e/detectors/test_data/solc-version/0.7.6/dynamic_1.sol#1 diff --git a/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_7_6_dynamic_2_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_7_6_dynamic_2_sol__0.txt index 53628ace16..ae3793886c 100644 --- a/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_7_6_dynamic_2_sol__0.txt +++ b/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_7_6_dynamic_2_sol__0.txt @@ -1,4 +1,6 @@ -Pragma version>=0.7.0<=0.7.6 (tests/e2e/detectors/test_data/solc-version/0.7.6/dynamic_2.sol#1) is too complex +Version constraint >=0.7.0<=0.7.6 is too complex. + It is used by: + - tests/e2e/detectors/test_data/solc-version/0.7.6/dynamic_2.sol#1 -solc-0.7.6 is not recommended for deployment +solc-0.7.6 is an outdated solc version. Use a more recent version (at least 0.8.0), if possible. diff --git a/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_7_6_static_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_7_6_static_sol__0.txt index 6d4297f2bb..5c5bba56bc 100644 --- a/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_7_6_static_sol__0.txt +++ b/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_7_6_static_sol__0.txt @@ -1,4 +1,15 @@ -Pragma version0.7.6 (tests/e2e/detectors/test_data/solc-version/0.7.6/static.sol#1) allows old versions +Version constraint 0.7.6 contain known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html) + - FullInlinerNonExpressionSplitArgumentEvaluationOrder + - MissingSideEffectsOnSelectorAccess + - AbiReencodingHeadOverflowWithStaticArrayCleanup + - DirtyBytesArrayToStorage + - DataLocationChangeInInternalOverride + - NestedCalldataArrayAbiReencodingSizeValidation + - SignedImmutables + - ABIDecodeTwoDimensionalArrayMemory + - KeccakCaching. + It is used by: + - tests/e2e/detectors/test_data/solc-version/0.7.6/static.sol#1 -solc-0.7.6 is not recommended for deployment +solc-0.7.6 is an outdated solc version. Use a more recent version (at least 0.8.0), if possible. From 448d77fad536d45bd2302b4103ee6cacd3b0cb0d Mon Sep 17 00:00:00 2001 From: alpharush <0xalpharush@protonmail.com> Date: Thu, 28 Mar 2024 22:23:28 -0500 Subject: [PATCH 2/3] lint and text update --- scripts/update_buggy_versions.py | 12 +++++++----- slither/detectors/attributes/incorrect_solc.py | 2 +- slither/utils/buggy_versions.py | 1 + ...__detector_IncorrectSolc_0_4_25_static_sol__0.txt | 6 +++--- ...__detector_IncorrectSolc_0_5_14_static_sol__0.txt | 2 +- ...etector_IncorrectSolc_0_5_16_dynamic_1_sol__0.txt | 2 +- ...etector_IncorrectSolc_0_5_16_dynamic_2_sol__0.txt | 2 +- ...__detector_IncorrectSolc_0_5_16_static_sol__0.txt | 2 +- ...__detector_IncorrectSolc_0_6_10_static_sol__0.txt | 2 +- ...etector_IncorrectSolc_0_6_11_dynamic_1_sol__0.txt | 2 +- ...etector_IncorrectSolc_0_6_11_dynamic_2_sol__0.txt | 2 +- ...__detector_IncorrectSolc_0_6_11_static_sol__0.txt | 2 +- ...s__detector_IncorrectSolc_0_7_4_static_sol__0.txt | 2 +- ...detector_IncorrectSolc_0_7_6_dynamic_1_sol__0.txt | 2 +- ...s__detector_IncorrectSolc_0_7_6_static_sol__0.txt | 6 +++--- 15 files changed, 25 insertions(+), 22 deletions(-) diff --git a/scripts/update_buggy_versions.py b/scripts/update_buggy_versions.py index 298a268b99..677228b17d 100644 --- a/scripts/update_buggy_versions.py +++ b/scripts/update_buggy_versions.py @@ -17,9 +17,11 @@ def organize_data(json_data): if __name__ == "__main__": - url = "https://raw.githubusercontent.com/ethereum/solidity/develop/docs/bugs_by_version.json" - json_data = retrieve_json(url) - version_bugs = organize_data(json_data) + bug_list_url = ( + "https://raw.githubusercontent.com/ethereum/solidity/develop/docs/bugs_by_version.json" + ) + bug_data = retrieve_json(bug_list_url) + bugs_by_version = organize_data(bug_data) - with open(Path.cwd() / Path("slither/utils/buggy_versions.py"), "w") as file: - file.write(f"bugs_by_version = {version_bugs}") + with open(Path.cwd() / Path("slither/utils/buggy_versions.py"), "w", encoding="utf-8") as file: + file.write(f"bugs_by_version = {bugs_by_version}") diff --git a/slither/detectors/attributes/incorrect_solc.py b/slither/detectors/attributes/incorrect_solc.py index e500c51f2c..56ff13315d 100644 --- a/slither/detectors/attributes/incorrect_solc.py +++ b/slither/detectors/attributes/incorrect_solc.py @@ -60,7 +60,7 @@ class IncorrectSolc(AbstractDetector): LESS_THAN_TXT = "uses lesser than" BUGGY_VERSION_TXT = ( - "contain known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html)" + "contains known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html)" ) # Indicates the allowed versions. Must be formatted in increasing order. diff --git a/slither/utils/buggy_versions.py b/slither/utils/buggy_versions.py index a30dabf55d..21a3f5a528 100644 --- a/slither/utils/buggy_versions.py +++ b/slither/utils/buggy_versions.py @@ -1583,6 +1583,7 @@ "0.8.22": ["VerbatimInvalidDeduplication"], "0.8.23": [], "0.8.24": [], + "0.8.25": [], "0.8.3": [ "FullInlinerNonExpressionSplitArgumentEvaluationOrder", "MissingSideEffectsOnSelectorAccess", diff --git a/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_4_25_static_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_4_25_static_sol__0.txt index 37df4af201..0a37cfba03 100644 --- a/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_4_25_static_sol__0.txt +++ b/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_4_25_static_sol__0.txt @@ -1,4 +1,6 @@ -Version constraint 0.4.25 contain known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html) +solc-0.4.25 is an outdated solc version. Use a more recent version (at least 0.8.0), if possible. + +Version constraint 0.4.25 contains known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html) - DirtyBytesArrayToStorage - ABIDecodeTwoDimensionalArrayMemory - KeccakCaching @@ -17,5 +19,3 @@ Version constraint 0.4.25 contain known severe issues (https://solidity.readthed It is used by: - tests/e2e/detectors/test_data/solc-version/0.4.25/static.sol#1 -solc-0.4.25 is an outdated solc version. Use a more recent version (at least 0.8.0), if possible. - diff --git a/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_5_14_static_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_5_14_static_sol__0.txt index 622fd980ea..7a65a5925d 100644 --- a/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_5_14_static_sol__0.txt +++ b/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_5_14_static_sol__0.txt @@ -1,4 +1,4 @@ -Version constraint 0.5.14 contain known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html) +Version constraint 0.5.14 contains known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html) - AbiReencodingHeadOverflowWithStaticArrayCleanup - DirtyBytesArrayToStorage - NestedCalldataArrayAbiReencodingSizeValidation diff --git a/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_5_16_dynamic_1_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_5_16_dynamic_1_sol__0.txt index 56db78fcc7..442355e38c 100644 --- a/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_5_16_dynamic_1_sol__0.txt +++ b/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_5_16_dynamic_1_sol__0.txt @@ -1,4 +1,4 @@ -Version constraint ^0.5.15 contain known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html) +Version constraint ^0.5.15 contains known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html) - AbiReencodingHeadOverflowWithStaticArrayCleanup - DirtyBytesArrayToStorage - NestedCalldataArrayAbiReencodingSizeValidation diff --git a/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_5_16_dynamic_2_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_5_16_dynamic_2_sol__0.txt index 49a96b6b1d..9cde284b52 100644 --- a/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_5_16_dynamic_2_sol__0.txt +++ b/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_5_16_dynamic_2_sol__0.txt @@ -1,4 +1,4 @@ -Version constraint >=0.5.0<0.6.0 contain known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html) +Version constraint >=0.5.0<0.6.0 contains known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html) - DirtyBytesArrayToStorage - ABIDecodeTwoDimensionalArrayMemory - KeccakCaching diff --git a/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_5_16_static_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_5_16_static_sol__0.txt index b661db49b1..15f233fe73 100644 --- a/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_5_16_static_sol__0.txt +++ b/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_5_16_static_sol__0.txt @@ -1,4 +1,4 @@ -Version constraint 0.5.16 contain known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html) +Version constraint 0.5.16 contains known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html) - AbiReencodingHeadOverflowWithStaticArrayCleanup - DirtyBytesArrayToStorage - NestedCalldataArrayAbiReencodingSizeValidation diff --git a/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_6_10_static_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_6_10_static_sol__0.txt index b6392c5579..de41146274 100644 --- a/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_6_10_static_sol__0.txt +++ b/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_6_10_static_sol__0.txt @@ -1,6 +1,6 @@ solc-0.6.10 is an outdated solc version. Use a more recent version (at least 0.8.0), if possible. -Version constraint 0.6.10 contain known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html) +Version constraint 0.6.10 contains known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html) - FullInlinerNonExpressionSplitArgumentEvaluationOrder - MissingSideEffectsOnSelectorAccess - AbiReencodingHeadOverflowWithStaticArrayCleanup diff --git a/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_6_11_dynamic_1_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_6_11_dynamic_1_sol__0.txt index 3ef69c4da0..626683d0ee 100644 --- a/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_6_11_dynamic_1_sol__0.txt +++ b/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_6_11_dynamic_1_sol__0.txt @@ -1,4 +1,4 @@ -Version constraint ^0.6.10 contain known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html) +Version constraint ^0.6.10 contains known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html) - FullInlinerNonExpressionSplitArgumentEvaluationOrder - MissingSideEffectsOnSelectorAccess - AbiReencodingHeadOverflowWithStaticArrayCleanup diff --git a/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_6_11_dynamic_2_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_6_11_dynamic_2_sol__0.txt index 244e807d69..2142313f28 100644 --- a/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_6_11_dynamic_2_sol__0.txt +++ b/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_6_11_dynamic_2_sol__0.txt @@ -1,4 +1,4 @@ -Version constraint >=0.6.0<0.7.0 contain known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html) +Version constraint >=0.6.0<0.7.0 contains known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html) - AbiReencodingHeadOverflowWithStaticArrayCleanup - DirtyBytesArrayToStorage - NestedCalldataArrayAbiReencodingSizeValidation diff --git a/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_6_11_static_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_6_11_static_sol__0.txt index c44f975c3f..ef330a1bbb 100644 --- a/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_6_11_static_sol__0.txt +++ b/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_6_11_static_sol__0.txt @@ -1,4 +1,4 @@ -Version constraint 0.6.11 contain known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html) +Version constraint 0.6.11 contains known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html) - FullInlinerNonExpressionSplitArgumentEvaluationOrder - MissingSideEffectsOnSelectorAccess - AbiReencodingHeadOverflowWithStaticArrayCleanup diff --git a/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_7_4_static_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_7_4_static_sol__0.txt index 77f1c40972..052d8cb271 100644 --- a/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_7_4_static_sol__0.txt +++ b/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_7_4_static_sol__0.txt @@ -1,4 +1,4 @@ -Version constraint 0.7.4 contain known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html) +Version constraint 0.7.4 contains known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html) - FullInlinerNonExpressionSplitArgumentEvaluationOrder - MissingSideEffectsOnSelectorAccess - AbiReencodingHeadOverflowWithStaticArrayCleanup diff --git a/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_7_6_dynamic_1_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_7_6_dynamic_1_sol__0.txt index 720dd24260..0a67e6f3ea 100644 --- a/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_7_6_dynamic_1_sol__0.txt +++ b/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_7_6_dynamic_1_sol__0.txt @@ -1,6 +1,6 @@ solc-0.7.6 is an outdated solc version. Use a more recent version (at least 0.8.0), if possible. -Version constraint ^0.7.4 contain known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html) +Version constraint ^0.7.4 contains known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html) - FullInlinerNonExpressionSplitArgumentEvaluationOrder - MissingSideEffectsOnSelectorAccess - AbiReencodingHeadOverflowWithStaticArrayCleanup diff --git a/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_7_6_static_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_7_6_static_sol__0.txt index 5c5bba56bc..70bc412b75 100644 --- a/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_7_6_static_sol__0.txt +++ b/tests/e2e/detectors/snapshots/detectors__detector_IncorrectSolc_0_7_6_static_sol__0.txt @@ -1,4 +1,6 @@ -Version constraint 0.7.6 contain known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html) +solc-0.7.6 is an outdated solc version. Use a more recent version (at least 0.8.0), if possible. + +Version constraint 0.7.6 contains known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html) - FullInlinerNonExpressionSplitArgumentEvaluationOrder - MissingSideEffectsOnSelectorAccess - AbiReencodingHeadOverflowWithStaticArrayCleanup @@ -11,5 +13,3 @@ Version constraint 0.7.6 contain known severe issues (https://solidity.readthedo It is used by: - tests/e2e/detectors/test_data/solc-version/0.7.6/static.sol#1 -solc-0.7.6 is an outdated solc version. Use a more recent version (at least 0.8.0), if possible. - From 613c62b46a57c2295381e6f07b1e85e73c15646b Mon Sep 17 00:00:00 2001 From: alpharush <0xalpharush@protonmail.com> Date: Thu, 28 Mar 2024 22:46:31 -0500 Subject: [PATCH 3/3] add pylint disable to buggy_versions.py --- scripts/update_buggy_versions.py | 1 + slither/utils/buggy_versions.py | 1 + 2 files changed, 2 insertions(+) diff --git a/scripts/update_buggy_versions.py b/scripts/update_buggy_versions.py index 677228b17d..37e8f990f4 100644 --- a/scripts/update_buggy_versions.py +++ b/scripts/update_buggy_versions.py @@ -24,4 +24,5 @@ def organize_data(json_data): bugs_by_version = organize_data(bug_data) with open(Path.cwd() / Path("slither/utils/buggy_versions.py"), "w", encoding="utf-8") as file: + file.write("# pylint: disable=too-many-lines\n") file.write(f"bugs_by_version = {bugs_by_version}") diff --git a/slither/utils/buggy_versions.py b/slither/utils/buggy_versions.py index 21a3f5a528..ad9605b893 100644 --- a/slither/utils/buggy_versions.py +++ b/slither/utils/buggy_versions.py @@ -1,3 +1,4 @@ +# pylint: disable=too-many-lines bugs_by_version = { "0.1.0": [ "DirtyBytesArrayToStorage",