Merge branch 'dev' into restructure-test-folder

pull/825/head
Josselin 4 years ago
commit 1782a76120
  1. 1
      slither/core/declarations/__init__.py
  2. 25
      slither/core/declarations/contract.py
  3. 4
      slither/core/slither_core.py
  4. 12
      slither/core/solidity_types/elementary_type.py
  5. 1
      slither/detectors/all_detectors.py
  6. 2
      slither/detectors/operations/unchecked_low_level_return_values.py
  7. 2
      slither/detectors/operations/unchecked_send_return_value.py
  8. 51
      slither/detectors/operations/unchecked_transfer.py
  9. 12
      slither/detectors/operations/unused_return_values.py
  10. 235
      slither/slithir/convert.py
  11. 8
      slither/slithir/operations/library_call.py
  12. 14
      slither/slithir/variables/reference.py
  13. 14
      slither/slithir/variables/temporary.py
  14. 14
      slither/slithir/variables/tuple.py
  15. 22
      slither/utils/command_line.py
  16. 6
      slither/utils/output.py
  17. 4
      tests/ast-parsing/library_implicit_conversion-0.4.0.sol
  18. 57
      tests/ast-parsing/library_implicit_conversion-0.5.0.sol
  19. 182
      tests/detectors/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol.0.4.25.ABIEncoderV2Array.json
  20. 226
      tests/detectors/abiencoderv2-array/0.5.10/storage_ABIEncoderV2_array.sol.0.5.10.ABIEncoderV2Array.json
  21. 2
      tests/detectors/arbitrary-send/0.4.25/arbitrary_send.sol.0.4.25.ArbitrarySend.json
  22. 2
      tests/detectors/arbitrary-send/0.5.16/arbitrary_send.sol.0.5.16.ArbitrarySend.json
  23. 2
      tests/detectors/arbitrary-send/0.6.11/arbitrary_send.sol.0.6.11.ArbitrarySend.json
  24. 2
      tests/detectors/arbitrary-send/0.7.6/arbitrary_send.sol.0.7.6.ArbitrarySend.json
  25. 6
      tests/detectors/array-by-reference/0.4.25/array_by_reference.sol.0.4.25.ArrayByReference.json
  26. 6
      tests/detectors/array-by-reference/0.5.16/array_by_reference.sol.0.5.16.ArrayByReference.json
  27. 6
      tests/detectors/array-by-reference/0.6.11/array_by_reference.sol.0.6.11.ArrayByReference.json
  28. 6
      tests/detectors/array-by-reference/0.7.6/array_by_reference.sol.0.7.6.ArrayByReference.json
  29. 1
      tests/detectors/assembly/0.4.25/inline_assembly_contract.sol.0.4.25.Assembly.json
  30. 2
      tests/detectors/assembly/0.4.25/inline_assembly_library.sol.0.4.25.Assembly.json
  31. 1
      tests/detectors/assembly/0.5.16/inline_assembly_contract.sol.0.5.16.Assembly.json
  32. 2
      tests/detectors/assembly/0.5.16/inline_assembly_library.sol.0.5.16.Assembly.json
  33. 1
      tests/detectors/assembly/0.6.11/inline_assembly_contract.sol.0.6.11.Assembly.json
  34. 2
      tests/detectors/assembly/0.6.11/inline_assembly_library.sol.0.6.11.Assembly.json
  35. 1
      tests/detectors/assembly/0.7.6/inline_assembly_contract.sol.0.7.6.Assembly.json
  36. 2
      tests/detectors/assembly/0.7.6/inline_assembly_library.sol.0.7.6.Assembly.json
  37. 3
      tests/detectors/assert-state-change/0.4.25/assert_state_change.sol.0.4.25.AssertStateChange.json
  38. 3
      tests/detectors/assert-state-change/0.5.16/assert_state_change.sol.0.5.16.AssertStateChange.json
  39. 3
      tests/detectors/assert-state-change/0.6.11/assert_state_change.sol.0.6.11.AssertStateChange.json
  40. 3
      tests/detectors/assert-state-change/0.7.6/assert_state_change.sol.0.7.6.AssertStateChange.json
  41. 1
      tests/detectors/backdoor/0.4.25/backdoor.sol.0.4.25.Backdoor.json
  42. 1
      tests/detectors/backdoor/0.5.16/backdoor.sol.0.5.16.Backdoor.json
  43. 1
      tests/detectors/backdoor/0.6.11/backdoor.sol.0.6.11.Backdoor.json
  44. 1
      tests/detectors/backdoor/0.7.6/backdoor.sol.0.7.6.Backdoor.json
  45. 1
      tests/detectors/boolean-cst/0.4.25/boolean-constant-misuse.sol.0.4.25.BooleanConstantMisuse.json
  46. 1
      tests/detectors/boolean-cst/0.5.16/boolean-constant-misuse.sol.0.5.16.BooleanConstantMisuse.json
  47. 1
      tests/detectors/boolean-cst/0.6.11/boolean-constant-misuse.sol.0.6.11.BooleanConstantMisuse.json
  48. 1
      tests/detectors/boolean-cst/0.7.6/boolean-constant-misuse.sol.0.7.6.BooleanConstantMisuse.json
  49. 1
      tests/detectors/boolean-equal/0.4.25/boolean-constant-equality.sol.0.4.25.BooleanEquality.json
  50. 1
      tests/detectors/boolean-equal/0.5.16/boolean-constant-equality.sol.0.5.16.BooleanEquality.json
  51. 1
      tests/detectors/boolean-equal/0.6.11/boolean-constant-equality.sol.0.6.11.BooleanEquality.json
  52. 1
      tests/detectors/boolean-equal/0.7.6/boolean-constant-equality.sol.0.7.6.BooleanEquality.json
  53. 1
      tests/detectors/calls-loop/0.4.25/multiple_calls_in_loop.sol.0.4.25.MultipleCallsInLoop.json
  54. 1
      tests/detectors/calls-loop/0.5.16/multiple_calls_in_loop.sol.0.5.16.MultipleCallsInLoop.json
  55. 1
      tests/detectors/calls-loop/0.6.11/multiple_calls_in_loop.sol.0.6.11.MultipleCallsInLoop.json
  56. 1
      tests/detectors/calls-loop/0.7.6/multiple_calls_in_loop.sol.0.7.6.MultipleCallsInLoop.json
  57. 6
      tests/detectors/constable-states/0.4.25/const_state_variables.sol.0.4.25.ConstCandidateStateVars.json
  58. 6
      tests/detectors/constable-states/0.5.16/const_state_variables.sol.0.5.16.ConstCandidateStateVars.json
  59. 6
      tests/detectors/constable-states/0.6.11/const_state_variables.sol.0.6.11.ConstCandidateStateVars.json
  60. 6
      tests/detectors/constable-states/0.7.6/const_state_variables.sol.0.7.6.ConstCandidateStateVars.json
  61. 1
      tests/detectors/constant-function-asm/0.4.25/constant.sol.0.4.25.ConstantFunctionsAsm.json
  62. 2
      tests/detectors/constant-function-state/0.4.25/constant.sol.0.4.25.ConstantFunctionsState.json
  63. 3
      tests/detectors/controlled-array-length/0.4.25/array_length_assignment.sol.0.4.25.ArrayLengthAssignment.json
  64. 35
      tests/detectors/controlled-array-length/0.5.16/array_length_assignment.sol.0.5.16.ArrayLengthAssignment.json
  65. 2
      tests/detectors/controlled-delegatecall/0.4.25/controlled_delegatecall.sol.0.4.25.ControlledDelegateCall.json
  66. 2
      tests/detectors/controlled-delegatecall/0.5.16/controlled_delegatecall.sol.0.5.16.ControlledDelegateCall.json
  67. 2
      tests/detectors/controlled-delegatecall/0.6.11/controlled_delegatecall.sol.0.6.11.ControlledDelegateCall.json
  68. 2
      tests/detectors/controlled-delegatecall/0.7.6/controlled_delegatecall.sol.0.7.6.ControlledDelegateCall.json
  69. 1
      tests/detectors/costly-loop/0.4.25/multiple_costly_operations_in_loop.sol.0.4.25.CostlyOperationsInLoop.json
  70. 1
      tests/detectors/costly-loop/0.5.16/multiple_costly_operations_in_loop.sol.0.5.16.CostlyOperationsInLoop.json
  71. 1
      tests/detectors/costly-loop/0.6.11/multiple_costly_operations_in_loop.sol.0.6.11.CostlyOperationsInLoop.json
  72. 1
      tests/detectors/costly-loop/0.7.6/multiple_costly_operations_in_loop.sol.0.7.6.CostlyOperationsInLoop.json
  73. 4
      tests/detectors/erc20-indexed/0.4.25/erc20_indexed.sol.0.4.25.UnindexedERC20EventParameters.json
  74. 4
      tests/detectors/erc20-indexed/0.5.16/erc20_indexed.sol.0.5.16.UnindexedERC20EventParameters.json
  75. 4
      tests/detectors/erc20-indexed/0.6.11/erc20_indexed.sol.0.6.11.UnindexedERC20EventParameters.json
  76. 4
      tests/detectors/erc20-indexed/0.7.6/erc20_indexed.sol.0.7.6.UnindexedERC20EventParameters.json
  77. 6
      tests/detectors/erc20-interface/0.4.25/incorrect_erc20_interface.sol.0.4.25.IncorrectERC20InterfaceDetection.json
  78. 6
      tests/detectors/erc20-interface/0.5.16/incorrect_erc20_interface.sol.0.5.16.IncorrectERC20InterfaceDetection.json
  79. 6
      tests/detectors/erc20-interface/0.6.11/incorrect_erc20_interface.sol.0.6.11.IncorrectERC20InterfaceDetection.json
  80. 6
      tests/detectors/erc20-interface/0.7.6/incorrect_erc20_interface.sol.0.7.6.IncorrectERC20InterfaceDetection.json
  81. 10
      tests/detectors/erc721-interface/0.4.25/incorrect_erc721_interface.sol.0.4.25.IncorrectERC721InterfaceDetection.json
  82. 10
      tests/detectors/erc721-interface/0.5.16/incorrect_erc721_interface.sol.0.5.16.IncorrectERC721InterfaceDetection.json
  83. 10
      tests/detectors/erc721-interface/0.6.11/incorrect_erc721_interface.sol.0.6.11.IncorrectERC721InterfaceDetection.json
  84. 10
      tests/detectors/erc721-interface/0.7.6/incorrect_erc721_interface.sol.0.7.6.IncorrectERC721InterfaceDetection.json
  85. 3
      tests/detectors/events-access/0.4.25/missing_events_access_control.sol.0.4.25.MissingEventsAccessControl.json
  86. 3
      tests/detectors/events-access/0.5.16/missing_events_access_control.sol.0.5.16.MissingEventsAccessControl.json
  87. 3
      tests/detectors/events-access/0.6.11/missing_events_access_control.sol.0.6.11.MissingEventsAccessControl.json
  88. 3
      tests/detectors/events-access/0.7.6/missing_events_access_control.sol.0.7.6.MissingEventsAccessControl.json
  89. 2
      tests/detectors/events-maths/0.4.25/missing_events_arithmetic.sol.0.4.25.MissingEventsArithmetic.json
  90. 2
      tests/detectors/events-maths/0.5.16/missing_events_arithmetic.sol.0.5.16.MissingEventsArithmetic.json
  91. 2
      tests/detectors/events-maths/0.6.11/missing_events_arithmetic.sol.0.6.11.MissingEventsArithmetic.json
  92. 2
      tests/detectors/events-maths/0.7.6/missing_events_arithmetic.sol.0.7.6.MissingEventsArithmetic.json
  93. 5
      tests/detectors/external-function/0.4.25/external_function.sol.0.4.25.ExternalFunction.json
  94. 5
      tests/detectors/external-function/0.5.16/external_function.sol.0.5.16.ExternalFunction.json
  95. 5
      tests/detectors/external-function/0.6.11/external_function.sol.0.6.11.ExternalFunction.json
  96. 5
      tests/detectors/external-function/0.7.6/external_function.sol.0.7.6.ExternalFunction.json
  97. 5
      tests/detectors/function-init-state/0.4.25/function_init_state_variables.sol.0.4.25.FunctionInitializedState.json
  98. 5
      tests/detectors/function-init-state/0.5.16/function_init_state_variables.sol.0.5.16.FunctionInitializedState.json
  99. 5
      tests/detectors/function-init-state/0.6.11/function_init_state_variables.sol.0.6.11.FunctionInitializedState.json
  100. 5
      tests/detectors/function-init-state/0.7.6/function_init_state_variables.sol.0.7.6.FunctionInitializedState.json
  101. Some files were not shown because too many files have changed in this diff Show More

@ -13,3 +13,4 @@ from .solidity_variables import (
from .structure import Structure
from .enum_contract import EnumContract
from .structure_contract import StructureContract
from .function_contract import FunctionContract

@ -25,7 +25,14 @@ from slither.utils.tests_pattern import is_test_contract
# pylint: disable=too-many-lines,too-many-instance-attributes,import-outside-toplevel,too-many-nested-blocks
if TYPE_CHECKING:
from slither.utils.type_helpers import LibraryCallType, HighLevelCallType, InternalCallType
from slither.core.declarations import Enum, Event, Modifier, EnumContract, StructureContract
from slither.core.declarations import (
Enum,
Event,
Modifier,
EnumContract,
StructureContract,
FunctionContract,
)
from slither.slithir.variables.variable import SlithIRVariable
from slither.core.variables.variable import Variable
from slither.core.variables.state_variable import StateVariable
@ -56,7 +63,7 @@ class Contract(ChildSlither, SourceMapping): # pylint: disable=too-many-public-
self._variables: Dict[str, "StateVariable"] = {}
self._variables_ordered: List["StateVariable"] = []
self._modifiers: Dict[str, "Modifier"] = {}
self._functions: Dict[str, "Function"] = {}
self._functions: Dict[str, "FunctionContract"] = {}
self._linearizedBaseContracts = List[int]
# The only str is "*"
@ -387,23 +394,23 @@ class Contract(ChildSlither, SourceMapping): # pylint: disable=too-many-public-
return self._signatures_declared
@property
def functions(self) -> List["Function"]:
def functions(self) -> List["FunctionContract"]:
"""
list(Function): List of the functions
"""
return list(self._functions.values())
def available_functions_as_dict(self) -> Dict[str, "Function"]:
def available_functions_as_dict(self) -> Dict[str, "FunctionContract"]:
if self._available_functions_as_dict is None:
self._available_functions_as_dict = {
f.full_name: f for f in self._functions.values() if not f.is_shadowed
}
return self._available_functions_as_dict
def add_function(self, func: "Function"):
def add_function(self, func: "FunctionContract"):
self._functions[func.canonical_name] = func
def set_functions(self, functions: Dict[str, "Function"]):
def set_functions(self, functions: Dict[str, "FunctionContract"]):
"""
Set the functions
@ -413,21 +420,21 @@ class Contract(ChildSlither, SourceMapping): # pylint: disable=too-many-public-
self._functions = functions
@property
def functions_inherited(self) -> List["Function"]:
def functions_inherited(self) -> List["FunctionContract"]:
"""
list(Function): List of the inherited functions
"""
return [f for f in self.functions if f.contract_declarer != self]
@property
def functions_declared(self) -> List["Function"]:
def functions_declared(self) -> List["FunctionContract"]:
"""
list(Function): List of the functions defined within the contract (not inherited)
"""
return [f for f in self.functions if f.contract_declarer == self]
@property
def functions_entry_points(self) -> List["Function"]:
def functions_entry_points(self) -> List["FunctionContract"]:
"""
list(Functions): List of public and external functions
"""

@ -90,6 +90,10 @@ class SlitherCore(Context): # pylint: disable=too-many-instance-attributes,too-
self._show_ignored_findings = False
self.counter_slithir_tuple = 0
self.counter_slithir_temporary = 0
self.counter_slithir_reference = 0
###################################################################################
###################################################################################
# region Source code

@ -85,8 +85,6 @@ Uint = [
Max_Uint = {k: 2 ** (8 * i) - 1 if i > 0 else 2 ** 256 - 1 for i, k in enumerate(Uint)}
Min_Uint = {k: 0 for k in Uint}
MaxValues = dict(Max_Int, **Max_Uint)
MinValues = dict(Min_Int, **Min_Uint)
Byte = [
"byte",
@ -125,6 +123,16 @@ Byte = [
"bytes32",
]
Max_Byte = {k: 2 ** (8 * (i + 1)) - 1 for i, k in enumerate(Byte[2:])}
Max_Byte["bytes"] = None
Max_Byte["byte"] = 255
Min_Byte = {k: 1 << (4 + 8 * i) for i, k in enumerate(Byte[2:])}
Min_Byte["bytes"] = 0x0
Min_Byte["byte"] = 0x10
MaxValues = dict(dict(Max_Int, **Max_Uint), **Max_Byte)
MinValues = dict(dict(Min_Int, **Min_Uint), **Min_Byte)
# https://solidity.readthedocs.io/en/v0.4.24/types.html#fixed-point-numbers
M = list(range(8, 257, 8))
N = list(range(0, 81))

@ -21,6 +21,7 @@ from .statements.tx_origin import TxOrigin
from .statements.assembly import Assembly
from .operations.low_level_calls import LowLevelCalls
from .operations.unused_return_values import UnusedReturnValues
from .operations.unchecked_transfer import UncheckedTransfer
from .naming_convention.naming_convention import NamingConvention
from .functions.external_function import ExternalFunction
from .statements.controlled_delegatecall import ControlledDelegateCall

@ -34,7 +34,5 @@ If the low level is used to prevent blocking operations, consider logging failed
WIKI_RECOMMENDATION = "Ensure that the return value of a low-level call is checked or logged."
_txt_description = "low-level calls"
def _is_instance(self, ir): # pylint: disable=no-self-use
return isinstance(ir, LowLevelCall)

@ -35,7 +35,5 @@ If `send` is used to prevent blocking operations, consider logging the failed `s
WIKI_RECOMMENDATION = "Ensure that the return value of `send` is checked or logged."
_txt_description = "send calls"
def _is_instance(self, ir): # pylint: disable=no-self-use
return isinstance(ir, Send)

@ -0,0 +1,51 @@
"""
Module detecting unused transfer/transferFrom return values from external calls
"""
from slither.core.declarations import Function
from slither.detectors.abstract_detector import DetectorClassification
from slither.detectors.operations.unused_return_values import UnusedReturnValues
from slither.slithir.operations import HighLevelCall
class UncheckedTransfer(UnusedReturnValues):
"""
If the return value of a transfer/transferFrom function is never used, it's likely to be bug
"""
ARGUMENT = "unchecked-transfer"
HELP = "Unchecked tokens transfer"
IMPACT = DetectorClassification.HIGH
CONFIDENCE = DetectorClassification.MEDIUM
WIKI = "https://github.com/crytic/slither/wiki/Detector-Documentation#unchecked-transfer"
WIKI_TITLE = "Unchecked transfer"
WIKI_DESCRIPTION = "The return value of an external transfer/transferFrom call is not checked"
WIKI_EXPLOIT_SCENARIO = """
```solidity
contract Token {
function transferFrom(address _from, address _to, uint256 _value) public returns (bool success);
}
contract MyBank{
mapping(address => uint) balances;
Token token;
function deposit(uint amount) public{
token.transferFrom(msg.sender, address(this), amount);
balances[msg.sender] += amount;
}
}
```
Several tokens do not revert in case of failure and return false. If one of these tokens is used in `MyBank`, `deposit` will not revert if the transfer fails, and an attacker can call `deposit` for free.."""
WIKI_RECOMMENDATION = (
"Use `SafeERC20`, or ensure that the transfer/transferFrom return value is checked."
)
def _is_instance(self, ir): # pylint: disable=no-self-use
return (
isinstance(ir, HighLevelCall)
and isinstance(ir.function, Function)
and ir.function.solidity_signature
in ["transfer(address,uint256)", "transferFrom(address,address,uint256)"]
)

@ -5,6 +5,7 @@ Module detecting unused return values from external calls
from slither.core.variables.state_variable import StateVariable
from slither.detectors.abstract_detector import AbstractDetector, DetectorClassification
from slither.slithir.operations import HighLevelCall
from slither.core.declarations import Function
class UnusedReturnValues(AbstractDetector):
@ -36,10 +37,15 @@ contract MyConc{
WIKI_RECOMMENDATION = "Ensure that all the return values of the function calls are used."
_txt_description = "external calls"
def _is_instance(self, ir): # pylint: disable=no-self-use
return isinstance(ir, HighLevelCall)
return isinstance(ir, HighLevelCall) and (
(
isinstance(ir.function, Function)
and ir.function.solidity_signature
not in ["transfer(address,uint256)", "transferFrom(address,address,uint256)"]
)
or not isinstance(ir.function, Function)
)
def detect_unused_return_values(self, f): # pylint: disable=no-self-use
"""

@ -1,5 +1,5 @@
import logging
from typing import List, TYPE_CHECKING
from typing import List, TYPE_CHECKING, Union, Optional
# pylint: disable= too-many-lines,import-outside-toplevel,too-many-branches,too-many-statements,too-many-nested-blocks
from slither.core.declarations import (
@ -22,7 +22,12 @@ from slither.core.solidity_types import (
UserDefinedType,
TypeInformation,
)
from slither.core.solidity_types.elementary_type import Int as ElementaryTypeInt
from slither.core.solidity_types.elementary_type import (
Int as ElementaryTypeInt,
Uint,
Byte,
MaxValues,
)
from slither.core.solidity_types.type import Type
from slither.core.variables.function_type_variable import FunctionTypeVariable
from slither.core.variables.state_variable import StateVariable
@ -60,6 +65,7 @@ from slither.slithir.operations import (
Unary,
Unpack,
Nop,
Operation,
)
from slither.slithir.operations.codesize import CodeSize
from slither.slithir.tmp_operations.argument import Argument, ArgumentType
@ -148,64 +154,111 @@ def is_gas(ins):
return False
def get_sig(ir, name):
"""
Return a list of potential signature
It is a list, as Constant variables can be converted to int256
Args:
ir (slithIR.operation)
Returns:
list(str)
def _fits_under_integer(val: int, can_be_int: bool, can_be_uint) -> List[str]:
"""
sig = "{}({})"
Return the list of uint/int that can contain val
# list of list of arguments
argss = convert_arguments(ir.arguments)
return [sig.format(name, ",".join(args)) for args in argss]
:param val:
:return:
"""
ret: List[str] = []
n = 8
assert can_be_int | can_be_uint
while n <= 256:
if can_be_uint:
if val <= 2 ** n - 1:
ret.append(f"uint{n}")
if can_be_int:
if val <= (2 ** n) / 2 - 1:
ret.append(f"int{n}")
n = n + 8
return ret
def get_canonical_names(ir, function_name, contract_name):
def _fits_under_byte(val: Union[int, str]) -> List[str]:
"""
Return a list of potential signature
It is a list, as Constant variables can be converted to int256
Args:
ir (slithIR.operation)
Returns:
list(str)
Return the list of byte that can contain val
:param val:
:return:
"""
sig = "{}({})"
# list of list of arguments
argss = convert_arguments(ir.arguments)
return [sig.format(f"{contract_name}.{function_name}", ",".join(args)) for args in argss]
# If the value is written as an int, it can only be saved in one byte size
# If its a string, it can be fitted under multiple values
if isinstance(val, int):
hex_val = hex(val)[2:]
size = len(hex_val) // 2
return [f"byte{size}"]
# val is a str
length = len(val.encode("utf-8"))
return [f"byte{f}" for f in range(length, 32)]
def _find_function_from_parameter(ir: Call, candidates: List[Function]) -> Optional[Function]:
"""
Look for a function in candidates that can be the target of the ir's call
Try the implicit type conversion for uint/int/bytes. Constant values can be both uint/int
While variables stick to their base type, but can changed the size
def convert_arguments(arguments):
argss = [[]]
for arg in arguments:
:param ir:
:param candidates:
:return:
"""
arguments = ir.arguments
type_args: List[str]
for idx, arg in enumerate(arguments):
if isinstance(arg, (list,)):
type_arg = "{}[{}]".format(get_type(arg[0].type), len(arg))
type_args = ["{}[{}]".format(get_type(arg[0].type), len(arg))]
elif isinstance(arg, Function):
type_arg = arg.signature_str
else:
type_arg = get_type(arg.type)
if isinstance(arg, Constant) and arg.type == ElementaryType("uint256"):
# If it is a constant
# We dupplicate the existing list
# And we add uint256 and int256 cases
# There is no potential collision, as the compiler
# Prevent it with a
# "not unique after argument-dependent loopkup" issue
argss_new = [list(args) for args in argss]
for args in argss:
args.append(str(ElementaryType("uint256")))
for args in argss_new:
args.append(str(ElementaryType("int256")))
argss = argss + argss_new
type_args = [arg.signature_str]
else:
for args in argss:
args.append(type_arg)
return argss
type_args = [get_type(arg.type)]
if (
isinstance(arg.type, ElementaryType)
and arg.type.type in ElementaryTypeInt + Uint + Byte
):
if isinstance(arg, Constant):
value = arg.value
can_be_uint = True
can_be_int = True
else:
value = MaxValues[arg.type.type]
can_be_uint = False
can_be_int = False
if arg.type.type in ElementaryTypeInt:
can_be_int = True
elif arg.type.type in Uint:
can_be_uint = True
if arg.type.type in ElementaryTypeInt + Uint:
type_args = _fits_under_integer(value, can_be_int, can_be_uint)
else:
print(value)
type_args = _fits_under_byte(value)
not_found = True
candidates_kept = []
for type_arg in type_args:
if not not_found:
break
candidates_kept = []
for candidate in candidates:
param = str(candidate.parameters[idx].type)
if param == type_arg:
not_found = False
candidates_kept.append(candidate)
if len(candidates_kept) == 1:
return candidates_kept[0]
candidates = candidates_kept
if len(candidates) == 1:
return candidates[0]
return None
def is_temporary(ins):
@ -1205,17 +1258,34 @@ def get_type(t):
return str(t)
def convert_type_library_call(ir, lib_contract):
sigs = get_sig(ir, ir.function_name)
def _can_be_implicitly_converted(source: str, target: str) -> bool:
if source in ElementaryTypeInt and target in ElementaryTypeInt:
return int(source[3:]) <= int(target[3:])
if source in Uint and target in Uint:
return int(source[4:]) <= int(target[4:])
return source == target
def convert_type_library_call(ir: HighLevelCall, lib_contract: Contract):
func = None
for sig in sigs:
func = lib_contract.get_function_from_signature(sig)
if not func:
func = lib_contract.get_state_variable_from_name(ir.function_name)
if func:
# stop to explore if func is found (prevent dupplicate issue)
break
candidates = [
f
for f in lib_contract.functions
if f.name == ir.function_name
and not f.is_shadowed
and len(f.parameters) == len(ir.arguments)
]
if len(candidates) == 1:
func = candidates[0]
if func is None:
# TODO: handle collision with multiple state variables/functions
func = lib_contract.get_state_variable_from_name(ir.function_name)
if func is None and candidates:
func = _find_function_from_parameter(ir, candidates)
# In case of multiple binding to the same type
# TODO: this part might not be needed with _find_function_from_parameter
if not func:
# specific lookup when the compiler does implicit conversion
# for example
@ -1282,36 +1352,39 @@ def _convert_to_structure_to_list(return_type: Type) -> List[Type]:
return [return_type.type]
def convert_type_of_high_and_internal_level_call(ir, contract):
def convert_type_of_high_and_internal_level_call(ir: Operation, contract: Contract):
func = None
if isinstance(ir, InternalCall):
sigs = get_canonical_names(ir, ir.function_name, ir.contract_name)
for sig in sigs:
func = contract.get_function_from_canonical_name(sig)
if func:
# stop to explore if func is found (prevent dupplicate issue)
break
candidates = [
f
for f in contract.functions
if f.name == ir.function_name
and f.contract_declarer.name == ir.contract_name
and len(f.parameters) == len(ir.arguments)
]
func = _find_function_from_parameter(ir, candidates)
if not func:
func = contract.get_state_variable_from_name(ir.function_name)
else:
assert isinstance(ir, HighLevelCall)
sigs = get_sig(ir, ir.function_name)
for sig in sigs:
func = contract.get_function_from_signature(sig)
if func:
# stop to explore if func is found (prevent dupplicate issue)
break
if not func:
candidates = [
f
for f in contract.functions
if f.name == ir.function_name
and not f.is_shadowed
and len(f.parameters) == len(ir.arguments)
]
if len(candidates) == 1:
func = candidates[0]
if func is None:
# TODO: handle collision with multiple state variables/functions
func = contract.get_state_variable_from_name(ir.function_name)
if not func:
# specific lookup when the compiler does implicit conversion
# for example
# myFunc(uint)
# can be called with an uint8
for function in contract.functions:
if function.name == ir.function_name and len(function.parameters) == len(ir.arguments):
func = function
break
if func is None and candidates:
func = _find_function_from_parameter(ir, candidates)
# lowlelvel lookup needs to be done at last step
if not func:
if can_be_low_level(ir):
@ -1319,7 +1392,7 @@ def convert_type_of_high_and_internal_level_call(ir, contract):
if can_be_solidity_func(ir):
return convert_to_solidity_func(ir)
if not func:
to_log = "Function not found {}".format(sig)
to_log = "Function not found {}".format(ir.function_name)
logger.error(to_log)
ir.function = func
if isinstance(func, Function):

@ -1,3 +1,4 @@
from slither.core.declarations import Function
from slither.slithir.operations.high_level_call import HighLevelCall
from slither.core.declarations.contract import Contract
@ -37,10 +38,15 @@ class LibraryCall(HighLevelCall):
else:
lvalue = "{}({}) = ".format(self.lvalue, self.lvalue.type)
txt = "{}LIBRARY_CALL, dest:{}, function:{}, arguments:{} {}"
function_name = self.function_name
if self.function:
if isinstance(self.function, Function):
function_name = self.function.canonical_name
return txt.format(
lvalue,
self.destination,
self.function_name,
function_name,
[str(x) for x in arguments],
gas,
)

@ -1,17 +1,19 @@
from typing import TYPE_CHECKING
from slither.core.children.child_node import ChildNode
from slither.core.declarations import Contract, Enum, SolidityVariable, Function
from slither.core.variables.variable import Variable
if TYPE_CHECKING:
from slither.core.cfg.node import Node
class ReferenceVariable(ChildNode, Variable):
COUNTER = 0
def __init__(self, node, index=None):
class ReferenceVariable(ChildNode, Variable):
def __init__(self, node: "Node", index=None):
super().__init__()
if index is None:
self._index = ReferenceVariable.COUNTER
ReferenceVariable.COUNTER += 1
self._index = node.slither.counter_slithir_reference
node.slither.counter_slithir_reference += 1
else:
self._index = index
self._points_to = None

@ -1,16 +1,18 @@
from typing import TYPE_CHECKING
from slither.core.children.child_node import ChildNode
from slither.core.variables.variable import Variable
if TYPE_CHECKING:
from slither.core.cfg.node import Node
class TemporaryVariable(ChildNode, Variable):
COUNTER = 0
def __init__(self, node, index=None):
class TemporaryVariable(ChildNode, Variable):
def __init__(self, node: "Node", index=None):
super().__init__()
if index is None:
self._index = TemporaryVariable.COUNTER
TemporaryVariable.COUNTER += 1
self._index = node.slither.counter_slithir_temporary
node.slither.counter_slithir_temporary += 1
else:
self._index = index
self._node = node

@ -1,16 +1,18 @@
from typing import TYPE_CHECKING
from slither.core.children.child_node import ChildNode
from slither.slithir.variables.variable import SlithIRVariable
if TYPE_CHECKING:
from slither.core.cfg.node import Node
class TupleVariable(ChildNode, SlithIRVariable):
COUNTER = 0
def __init__(self, node, index=None):
class TupleVariable(ChildNode, SlithIRVariable):
def __init__(self, node: "Node", index=None):
super().__init__()
if index is None:
self._index = TupleVariable.COUNTER
TupleVariable.COUNTER += 1
self._index = node.slither.counter_slithir_tuple
node.slither.counter_slithir_tuple += 1
else:
self._index = index

@ -147,25 +147,27 @@ def convert_result_to_markdown(txt):
def output_results_to_markdown(all_results):
checks = defaultdict(list)
info = defaultdict(dict)
for results in all_results:
checks[results["check"]].append(results["description"])
checks[results["check"]].append(results)
info[results["check"]] = {"impact": results["impact"], "confidence": results["confidence"]}
print("Summary")
for check in checks:
print(f" - [{check}](#{check}) ({len(checks[check])} results)")
counter = 0
for (check, results) in checks.items():
print(f"## {check}")
print(
"""
| Analyzed | Description |
|----------------|-----------|"""
)
print(f'Impact: {info[check]["impact"]}')
print(f'Confidence: {info[check]["confidence"]}')
for result in results:
result_markdown = convert_result_to_markdown(result)
print(
f"| <ul><li>[ ] TP</li><li>[ ] FP</li><li>[ ] Unknown</li></ul> | {result_markdown}"
)
print(" - [ ] ID-" + f"{counter}")
counter = counter + 1
print(result["markdown"])
if result["first_markdown_element"]:
print(result["first_markdown_element"])
print("\n")
def output_wiki(detector_classes, filter_wiki):

@ -236,6 +236,8 @@ class Output:
self._data["elements"] = []
self._data["description"] = "".join(_convert_to_description(d) for d in info)
self._data["markdown"] = "".join(_convert_to_markdown(d, markdown_root) for d in info)
self._data["first_markdown_element"] = ""
self._markdown_root = markdown_root
id_txt = "".join(_convert_to_id(d) for d in info)
self._data["id"] = hashlib.sha3_256(id_txt.encode("utf-8")).hexdigest()
@ -250,6 +252,10 @@ class Output:
self._data["additional_fields"] = additional_fields
def add(self, add: SupportedOutput, additional_fields: Optional[Dict] = None):
if not self._data["first_markdown_element"]:
self._data["first_markdown_element"] = add.source_mapping_to_markdown(
self._markdown_root
)
if isinstance(add, Variable):
self.add_variable(add, additional_fields=additional_fields)
elif isinstance(add, Contract):

@ -0,0 +1,4 @@
// test only above 0.5
contract C{
}

@ -0,0 +1,57 @@
library LibByte{
function t(uint, bytes1) internal returns(uint){
return 0x1;
}
function t(uint, bytes32) internal returns(uint){
return 0x32;
}
}
contract TestByte{
using LibByte for uint;
function test() public returns(uint){
uint a;
return a.t(0x10); // for byte, this will match only bytes1
}
}
library LibUint{
function t(uint, uint8) internal returns(uint){
return 0x1;
}
function t(uint, uint256) internal returns(uint){
return 0x32;
}
}
contract TestUint{
using LibUint for uint;
function test() public returns(uint){
uint a;
return a.t(2**8); // above uint8
}
}
library LibInt{
function t(uint, int8) internal returns(uint){
return 0x1;
}
function t(uint, int256) internal returns(uint){
return 0x32;
}
}
contract TestUintWithVariableiAndConversion{
using LibInt for uint;
function test() public returns(uint){
uint a;
int16 v;
return a.t(v); // above uint8
}
}

@ -4,19 +4,19 @@
"elements": [
{
"type": "function",
"name": "bad1",
"name": "bad3",
"source_mapping": {
"start": 726,
"length": 63,
"start": 1076,
"length": 154,
"filename_used": "/GENERIC_PATH",
"filename_relative": "tests/detectors/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol",
"filename_absolute": "/GENERIC_PATH",
"filename_short": "tests/detectors/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol",
"is_dependency": false,
"lines": [
29,
30,
31
39,
40,
41
],
"starting_column": 3,
"ending_column": 4
@ -136,42 +136,42 @@
"ending_column": 2
}
},
"signature": "bad1(A.S[3])"
"signature": "bad3()"
}
},
{
"type": "node",
"name": "this.bad1_external(s)",
"name": "b = abi.encode(s)",
"source_mapping": {
"start": 763,
"length": 21,
"start": 1195,
"length": 30,
"filename_used": "/GENERIC_PATH",
"filename_relative": "tests/detectors/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol",
"filename_absolute": "/GENERIC_PATH",
"filename_short": "tests/detectors/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol",
"is_dependency": false,
"lines": [
30
40
],
"starting_column": 5,
"ending_column": 26
"ending_column": 35
},
"type_specific_fields": {
"parent": {
"type": "function",
"name": "bad1",
"name": "bad3",
"source_mapping": {
"start": 726,
"length": 63,
"start": 1076,
"length": 154,
"filename_used": "/GENERIC_PATH",
"filename_relative": "tests/detectors/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol",
"filename_absolute": "/GENERIC_PATH",
"filename_short": "tests/detectors/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol",
"is_dependency": false,
"lines": [
29,
30,
31
39,
40,
41
],
"starting_column": 3,
"ending_column": 4
@ -291,15 +291,16 @@
"ending_column": 2
}
},
"signature": "bad1(A.S[3])"
"signature": "bad3()"
}
}
}
}
],
"description": "Function A.bad1(A.S[3]) (tests/detectors/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol#29-31) trigger an abi encoding bug:\n\t- this.bad1_external(s) (tests/detectors/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol#30)\n",
"markdown": "Function [A.bad1(A.S[3])](tests/detectors/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol#L29-L31) trigger an abi encoding bug:\n\t- [this.bad1_external(s)](tests/detectors/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol#L30)\n",
"id": "3febdd98f71332c80290c9557c5ef89ea9dbea4f520a084b0307f21b00da5010",
"description": "Function A.bad3() (tests/detectors/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol#39-41) trigger an abi encoding bug:\n\t- b = abi.encode(s) (tests/detectors/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol#40)\n",
"markdown": "Function [A.bad3()](tests/detectors/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol#L39-L41) trigger an abi encoding bug:\n\t- [b = abi.encode(s)](tests/detectors/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol#L40)\n",
"first_markdown_element": "tests/detectors/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol#L39-L41",
"id": "0c50cf7f7b16d965ef04035beb09d25f3fa1fa4afeeb079ea42f2db879e8f1e9",
"check": "abiencoderv2-array",
"impact": "High",
"confidence": "High"
@ -308,19 +309,19 @@
"elements": [
{
"type": "function",
"name": "bad3",
"name": "bad0",
"source_mapping": {
"start": 1076,
"length": 154,
"start": 540,
"length": 61,
"filename_used": "/GENERIC_PATH",
"filename_relative": "tests/detectors/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol",
"filename_absolute": "/GENERIC_PATH",
"filename_short": "tests/detectors/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol",
"is_dependency": false,
"lines": [
39,
40,
41
21,
22,
23
],
"starting_column": 3,
"ending_column": 4
@ -440,42 +441,42 @@
"ending_column": 2
}
},
"signature": "bad3()"
"signature": "bad0()"
}
},
{
"type": "node",
"name": "b = abi.encode(s)",
"name": "this.bad0_external(bad_arr)",
"source_mapping": {
"start": 1195,
"length": 30,
"start": 569,
"length": 27,
"filename_used": "/GENERIC_PATH",
"filename_relative": "tests/detectors/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol",
"filename_absolute": "/GENERIC_PATH",
"filename_short": "tests/detectors/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol",
"is_dependency": false,
"lines": [
40
22
],
"starting_column": 5,
"ending_column": 35
"ending_column": 32
},
"type_specific_fields": {
"parent": {
"type": "function",
"name": "bad3",
"name": "bad0",
"source_mapping": {
"start": 1076,
"length": 154,
"start": 540,
"length": 61,
"filename_used": "/GENERIC_PATH",
"filename_relative": "tests/detectors/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol",
"filename_absolute": "/GENERIC_PATH",
"filename_short": "tests/detectors/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol",
"is_dependency": false,
"lines": [
39,
40,
41
21,
22,
23
],
"starting_column": 3,
"ending_column": 4
@ -595,15 +596,16 @@
"ending_column": 2
}
},
"signature": "bad3()"
"signature": "bad0()"
}
}
}
}
],
"description": "Function A.bad3() (tests/detectors/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol#39-41) trigger an abi encoding bug:\n\t- b = abi.encode(s) (tests/detectors/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol#40)\n",
"markdown": "Function [A.bad3()](tests/detectors/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol#L39-L41) trigger an abi encoding bug:\n\t- [b = abi.encode(s)](tests/detectors/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol#L40)\n",
"id": "0c50cf7f7b16d965ef04035beb09d25f3fa1fa4afeeb079ea42f2db879e8f1e9",
"description": "Function A.bad0() (tests/detectors/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol#21-23) trigger an abi encoding bug:\n\t- this.bad0_external(bad_arr) (tests/detectors/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol#22)\n",
"markdown": "Function [A.bad0()](tests/detectors/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol#L21-L23) trigger an abi encoding bug:\n\t- [this.bad0_external(bad_arr)](tests/detectors/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol#L22)\n",
"first_markdown_element": "tests/detectors/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol#L21-L23",
"id": "3752da45df0ba78cc9ac01a10b398e4ad74e6ddd572764cf2f361e523a43a998",
"check": "abiencoderv2-array",
"impact": "High",
"confidence": "High"
@ -612,19 +614,19 @@
"elements": [
{
"type": "function",
"name": "bad4",
"name": "bad1",
"source_mapping": {
"start": 1296,
"length": 148,
"start": 726,
"length": 63,
"filename_used": "/GENERIC_PATH",
"filename_relative": "tests/detectors/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol",
"filename_absolute": "/GENERIC_PATH",
"filename_short": "tests/detectors/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol",
"is_dependency": false,
"lines": [
44,
45,
46
29,
30,
31
],
"starting_column": 3,
"ending_column": 4
@ -744,42 +746,42 @@
"ending_column": 2
}
},
"signature": "bad4()"
"signature": "bad1(A.S[3])"
}
},
{
"type": "node",
"name": "event1_bad(bad_arr)",
"name": "this.bad1_external(s)",
"source_mapping": {
"start": 1415,
"length": 24,
"start": 763,
"length": 21,
"filename_used": "/GENERIC_PATH",
"filename_relative": "tests/detectors/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol",
"filename_absolute": "/GENERIC_PATH",
"filename_short": "tests/detectors/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol",
"is_dependency": false,
"lines": [
45
30
],
"starting_column": 5,
"ending_column": 29
"ending_column": 26
},
"type_specific_fields": {
"parent": {
"type": "function",
"name": "bad4",
"name": "bad1",
"source_mapping": {
"start": 1296,
"length": 148,
"start": 726,
"length": 63,
"filename_used": "/GENERIC_PATH",
"filename_relative": "tests/detectors/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol",
"filename_absolute": "/GENERIC_PATH",
"filename_short": "tests/detectors/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol",
"is_dependency": false,
"lines": [
44,
45,
46
29,
30,
31
],
"starting_column": 3,
"ending_column": 4
@ -899,15 +901,16 @@
"ending_column": 2
}
},
"signature": "bad4()"
"signature": "bad1(A.S[3])"
}
}
}
}
],
"description": "Function A.bad4() (tests/detectors/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol#44-46) trigger an abi encoding bug:\n\t- event1_bad(bad_arr) (tests/detectors/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol#45)\n",
"markdown": "Function [A.bad4()](tests/detectors/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol#L44-L46) trigger an abi encoding bug:\n\t- [event1_bad(bad_arr)](tests/detectors/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol#L45)\n",
"id": "144c77aebb4037fe38c2864892ecb888a4fb7d5e92e321e664b2d2226658a166",
"description": "Function A.bad1(A.S[3]) (tests/detectors/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol#29-31) trigger an abi encoding bug:\n\t- this.bad1_external(s) (tests/detectors/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol#30)\n",
"markdown": "Function [A.bad1(A.S[3])](tests/detectors/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol#L29-L31) trigger an abi encoding bug:\n\t- [this.bad1_external(s)](tests/detectors/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol#L30)\n",
"first_markdown_element": "tests/detectors/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol#L29-L31",
"id": "3febdd98f71332c80290c9557c5ef89ea9dbea4f520a084b0307f21b00da5010",
"check": "abiencoderv2-array",
"impact": "High",
"confidence": "High"
@ -1211,6 +1214,7 @@
],
"description": "Function A.bad5() (tests/detectors/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol#49-51) trigger an abi encoding bug:\n\t- event2_bad(s) (tests/detectors/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol#50)\n",
"markdown": "Function [A.bad5()](tests/detectors/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol#L49-L51) trigger an abi encoding bug:\n\t- [event2_bad(s)](tests/detectors/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol#L50)\n",
"first_markdown_element": "tests/detectors/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol#L49-L51",
"id": "e77767c95f4548636027a859ca0c63402cfb50af242f116dd3cfc5b038a4128e",
"check": "abiencoderv2-array",
"impact": "High",
@ -1220,19 +1224,19 @@
"elements": [
{
"type": "function",
"name": "bad0",
"name": "bad4",
"source_mapping": {
"start": 540,
"length": 61,
"start": 1296,
"length": 148,
"filename_used": "/GENERIC_PATH",
"filename_relative": "tests/detectors/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol",
"filename_absolute": "/GENERIC_PATH",
"filename_short": "tests/detectors/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol",
"is_dependency": false,
"lines": [
21,
22,
23
44,
45,
46
],
"starting_column": 3,
"ending_column": 4
@ -1352,42 +1356,42 @@
"ending_column": 2
}
},
"signature": "bad0()"
"signature": "bad4()"
}
},
{
"type": "node",
"name": "this.bad0_external(bad_arr)",
"name": "event1_bad(bad_arr)",
"source_mapping": {
"start": 569,
"length": 27,
"start": 1415,
"length": 24,
"filename_used": "/GENERIC_PATH",
"filename_relative": "tests/detectors/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol",
"filename_absolute": "/GENERIC_PATH",
"filename_short": "tests/detectors/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol",
"is_dependency": false,
"lines": [
22
45
],
"starting_column": 5,
"ending_column": 32
"ending_column": 29
},
"type_specific_fields": {
"parent": {
"type": "function",
"name": "bad0",
"name": "bad4",
"source_mapping": {
"start": 540,
"length": 61,
"start": 1296,
"length": 148,
"filename_used": "/GENERIC_PATH",
"filename_relative": "tests/detectors/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol",
"filename_absolute": "/GENERIC_PATH",
"filename_short": "tests/detectors/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol",
"is_dependency": false,
"lines": [
21,
22,
23
44,
45,
46
],
"starting_column": 3,
"ending_column": 4
@ -1507,15 +1511,16 @@
"ending_column": 2
}
},
"signature": "bad0()"
"signature": "bad4()"
}
}
}
}
],
"description": "Function A.bad0() (tests/detectors/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol#21-23) trigger an abi encoding bug:\n\t- this.bad0_external(bad_arr) (tests/detectors/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol#22)\n",
"markdown": "Function [A.bad0()](tests/detectors/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol#L21-L23) trigger an abi encoding bug:\n\t- [this.bad0_external(bad_arr)](tests/detectors/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol#L22)\n",
"id": "3752da45df0ba78cc9ac01a10b398e4ad74e6ddd572764cf2f361e523a43a998",
"description": "Function A.bad4() (tests/detectors/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol#44-46) trigger an abi encoding bug:\n\t- event1_bad(bad_arr) (tests/detectors/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol#45)\n",
"markdown": "Function [A.bad4()](tests/detectors/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol#L44-L46) trigger an abi encoding bug:\n\t- [event1_bad(bad_arr)](tests/detectors/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol#L45)\n",
"first_markdown_element": "tests/detectors/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol#L44-L46",
"id": "144c77aebb4037fe38c2864892ecb888a4fb7d5e92e321e664b2d2226658a166",
"check": "abiencoderv2-array",
"impact": "High",
"confidence": "High"
@ -1819,6 +1824,7 @@
],
"description": "Function A.bad2() (tests/detectors/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol#34-36) trigger an abi encoding bug:\n\t- b = abi.encode(bad_arr) (tests/detectors/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol#35)\n",
"markdown": "Function [A.bad2()](tests/detectors/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol#L34-L36) trigger an abi encoding bug:\n\t- [b = abi.encode(bad_arr)](tests/detectors/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol#L35)\n",
"first_markdown_element": "tests/detectors/abiencoderv2-array/0.4.25/storage_ABIEncoderV2_array.sol#L34-L36",
"id": "d5860309d331920d1e3f44508fea706df75a4a7c2e93666ca96ca00ef32d7e01",
"check": "abiencoderv2-array",
"impact": "High",

@ -4,19 +4,19 @@
"elements": [
{
"type": "function",
"name": "bad5",
"name": "bad4",
"source_mapping": {
"start": 1536,
"length": 142,
"start": 1321,
"length": 148,
"filename_used": "/GENERIC_PATH",
"filename_relative": "tests/detectors/abiencoderv2-array/0.5.10/storage_ABIEncoderV2_array.sol",
"filename_absolute": "/GENERIC_PATH",
"filename_short": "tests/detectors/abiencoderv2-array/0.5.10/storage_ABIEncoderV2_array.sol",
"is_dependency": false,
"lines": [
49,
50,
51
44,
45,
46
],
"starting_column": 3,
"ending_column": 4
@ -136,42 +136,42 @@
"ending_column": 2
}
},
"signature": "bad5()"
"signature": "bad4()"
}
},
{
"type": "node",
"name": "event2_bad(s)",
"name": "event1_bad(bad_arr)",
"source_mapping": {
"start": 1655,
"length": 18,
"start": 1440,
"length": 24,
"filename_used": "/GENERIC_PATH",
"filename_relative": "tests/detectors/abiencoderv2-array/0.5.10/storage_ABIEncoderV2_array.sol",
"filename_absolute": "/GENERIC_PATH",
"filename_short": "tests/detectors/abiencoderv2-array/0.5.10/storage_ABIEncoderV2_array.sol",
"is_dependency": false,
"lines": [
50
45
],
"starting_column": 5,
"ending_column": 23
"ending_column": 29
},
"type_specific_fields": {
"parent": {
"type": "function",
"name": "bad5",
"name": "bad4",
"source_mapping": {
"start": 1536,
"length": 142,
"start": 1321,
"length": 148,
"filename_used": "/GENERIC_PATH",
"filename_relative": "tests/detectors/abiencoderv2-array/0.5.10/storage_ABIEncoderV2_array.sol",
"filename_absolute": "/GENERIC_PATH",
"filename_short": "tests/detectors/abiencoderv2-array/0.5.10/storage_ABIEncoderV2_array.sol",
"is_dependency": false,
"lines": [
49,
50,
51
44,
45,
46
],
"starting_column": 3,
"ending_column": 4
@ -291,15 +291,16 @@
"ending_column": 2
}
},
"signature": "bad5()"
"signature": "bad4()"
}
}
}
}
],
"description": "Function A.bad5() (tests/detectors/abiencoderv2-array/0.5.10/storage_ABIEncoderV2_array.sol#49-51) trigger an abi encoding bug:\n\t- event2_bad(s) (tests/detectors/abiencoderv2-array/0.5.10/storage_ABIEncoderV2_array.sol#50)\n",
"markdown": "Function [A.bad5()](tests/detectors/abiencoderv2-array/0.5.10/storage_ABIEncoderV2_array.sol#L49-L51) trigger an abi encoding bug:\n\t- [event2_bad(s)](tests/detectors/abiencoderv2-array/0.5.10/storage_ABIEncoderV2_array.sol#L50)\n",
"id": "eeb6e1300bf8056da088cb4f3e2703471fee9fdca73774ce3643fb884954d216",
"description": "Function A.bad4() (tests/detectors/abiencoderv2-array/0.5.10/storage_ABIEncoderV2_array.sol#44-46) trigger an abi encoding bug:\n\t- event1_bad(bad_arr) (tests/detectors/abiencoderv2-array/0.5.10/storage_ABIEncoderV2_array.sol#45)\n",
"markdown": "Function [A.bad4()](tests/detectors/abiencoderv2-array/0.5.10/storage_ABIEncoderV2_array.sol#L44-L46) trigger an abi encoding bug:\n\t- [event1_bad(bad_arr)](tests/detectors/abiencoderv2-array/0.5.10/storage_ABIEncoderV2_array.sol#L45)\n",
"first_markdown_element": "tests/detectors/abiencoderv2-array/0.5.10/storage_ABIEncoderV2_array.sol#L44-L46",
"id": "41b64698d5678d4095816d22b2d431371ca18801800bcf35b077e2675724a4e6",
"check": "abiencoderv2-array",
"impact": "High",
"confidence": "High"
@ -603,6 +604,7 @@
],
"description": "Function A.bad1(A.S[3]) (tests/detectors/abiencoderv2-array/0.5.10/storage_ABIEncoderV2_array.sol#29-31) trigger an abi encoding bug:\n\t- this.bad1_external(s) (tests/detectors/abiencoderv2-array/0.5.10/storage_ABIEncoderV2_array.sol#30)\n",
"markdown": "Function [A.bad1(A.S[3])](tests/detectors/abiencoderv2-array/0.5.10/storage_ABIEncoderV2_array.sol#L29-L31) trigger an abi encoding bug:\n\t- [this.bad1_external(s)](tests/detectors/abiencoderv2-array/0.5.10/storage_ABIEncoderV2_array.sol#L30)\n",
"first_markdown_element": "tests/detectors/abiencoderv2-array/0.5.10/storage_ABIEncoderV2_array.sol#L29-L31",
"id": "e432c7633b89e67459b76c1265a299e59fe6a651edd8888067df47200840451d",
"check": "abiencoderv2-array",
"impact": "High",
@ -612,19 +614,19 @@
"elements": [
{
"type": "function",
"name": "bad2",
"name": "bad3",
"source_mapping": {
"start": 877,
"length": 160,
"start": 1101,
"length": 154,
"filename_used": "/GENERIC_PATH",
"filename_relative": "tests/detectors/abiencoderv2-array/0.5.10/storage_ABIEncoderV2_array.sol",
"filename_absolute": "/GENERIC_PATH",
"filename_short": "tests/detectors/abiencoderv2-array/0.5.10/storage_ABIEncoderV2_array.sol",
"is_dependency": false,
"lines": [
34,
35,
36
39,
40,
41
],
"starting_column": 3,
"ending_column": 4
@ -744,42 +746,42 @@
"ending_column": 2
}
},
"signature": "bad2()"
"signature": "bad3()"
}
},
{
"type": "node",
"name": "b = abi.encode(bad_arr)",
"name": "b = abi.encode(s)",
"source_mapping": {
"start": 996,
"length": 36,
"start": 1220,
"length": 30,
"filename_used": "/GENERIC_PATH",
"filename_relative": "tests/detectors/abiencoderv2-array/0.5.10/storage_ABIEncoderV2_array.sol",
"filename_absolute": "/GENERIC_PATH",
"filename_short": "tests/detectors/abiencoderv2-array/0.5.10/storage_ABIEncoderV2_array.sol",
"is_dependency": false,
"lines": [
35
40
],
"starting_column": 5,
"ending_column": 41
"ending_column": 35
},
"type_specific_fields": {
"parent": {
"type": "function",
"name": "bad2",
"name": "bad3",
"source_mapping": {
"start": 877,
"length": 160,
"start": 1101,
"length": 154,
"filename_used": "/GENERIC_PATH",
"filename_relative": "tests/detectors/abiencoderv2-array/0.5.10/storage_ABIEncoderV2_array.sol",
"filename_absolute": "/GENERIC_PATH",
"filename_short": "tests/detectors/abiencoderv2-array/0.5.10/storage_ABIEncoderV2_array.sol",
"is_dependency": false,
"lines": [
34,
35,
36
39,
40,
41
],
"starting_column": 3,
"ending_column": 4
@ -899,15 +901,16 @@
"ending_column": 2
}
},
"signature": "bad2()"
"signature": "bad3()"
}
}
}
}
],
"description": "Function A.bad2() (tests/detectors/abiencoderv2-array/0.5.10/storage_ABIEncoderV2_array.sol#34-36) trigger an abi encoding bug:\n\t- b = abi.encode(bad_arr) (tests/detectors/abiencoderv2-array/0.5.10/storage_ABIEncoderV2_array.sol#35)\n",
"markdown": "Function [A.bad2()](tests/detectors/abiencoderv2-array/0.5.10/storage_ABIEncoderV2_array.sol#L34-L36) trigger an abi encoding bug:\n\t- [b = abi.encode(bad_arr)](tests/detectors/abiencoderv2-array/0.5.10/storage_ABIEncoderV2_array.sol#L35)\n",
"id": "fb8e8ba854095891e3a490b43b126215858286a4a59902e7c63394a83befab0b",
"description": "Function A.bad3() (tests/detectors/abiencoderv2-array/0.5.10/storage_ABIEncoderV2_array.sol#39-41) trigger an abi encoding bug:\n\t- b = abi.encode(s) (tests/detectors/abiencoderv2-array/0.5.10/storage_ABIEncoderV2_array.sol#40)\n",
"markdown": "Function [A.bad3()](tests/detectors/abiencoderv2-array/0.5.10/storage_ABIEncoderV2_array.sol#L39-L41) trigger an abi encoding bug:\n\t- [b = abi.encode(s)](tests/detectors/abiencoderv2-array/0.5.10/storage_ABIEncoderV2_array.sol#L40)\n",
"first_markdown_element": "tests/detectors/abiencoderv2-array/0.5.10/storage_ABIEncoderV2_array.sol#L39-L41",
"id": "3bda232f70109507c2cc575917cb69423e6d045e3b1d084ef881a411f54b2069",
"check": "abiencoderv2-array",
"impact": "High",
"confidence": "High"
@ -916,19 +919,19 @@
"elements": [
{
"type": "function",
"name": "bad4",
"name": "bad5",
"source_mapping": {
"start": 1321,
"length": 148,
"start": 1536,
"length": 142,
"filename_used": "/GENERIC_PATH",
"filename_relative": "tests/detectors/abiencoderv2-array/0.5.10/storage_ABIEncoderV2_array.sol",
"filename_absolute": "/GENERIC_PATH",
"filename_short": "tests/detectors/abiencoderv2-array/0.5.10/storage_ABIEncoderV2_array.sol",
"is_dependency": false,
"lines": [
44,
45,
46
49,
50,
51
],
"starting_column": 3,
"ending_column": 4
@ -1048,42 +1051,42 @@
"ending_column": 2
}
},
"signature": "bad4()"
"signature": "bad5()"
}
},
{
"type": "node",
"name": "event1_bad(bad_arr)",
"name": "event2_bad(s)",
"source_mapping": {
"start": 1440,
"length": 24,
"start": 1655,
"length": 18,
"filename_used": "/GENERIC_PATH",
"filename_relative": "tests/detectors/abiencoderv2-array/0.5.10/storage_ABIEncoderV2_array.sol",
"filename_absolute": "/GENERIC_PATH",
"filename_short": "tests/detectors/abiencoderv2-array/0.5.10/storage_ABIEncoderV2_array.sol",
"is_dependency": false,
"lines": [
45
50
],
"starting_column": 5,
"ending_column": 29
"ending_column": 23
},
"type_specific_fields": {
"parent": {
"type": "function",
"name": "bad4",
"name": "bad5",
"source_mapping": {
"start": 1321,
"length": 148,
"start": 1536,
"length": 142,
"filename_used": "/GENERIC_PATH",
"filename_relative": "tests/detectors/abiencoderv2-array/0.5.10/storage_ABIEncoderV2_array.sol",
"filename_absolute": "/GENERIC_PATH",
"filename_short": "tests/detectors/abiencoderv2-array/0.5.10/storage_ABIEncoderV2_array.sol",
"is_dependency": false,
"lines": [
44,
45,
46
49,
50,
51
],
"starting_column": 3,
"ending_column": 4
@ -1203,15 +1206,16 @@
"ending_column": 2
}
},
"signature": "bad4()"
"signature": "bad5()"
}
}
}
}
],
"description": "Function A.bad4() (tests/detectors/abiencoderv2-array/0.5.10/storage_ABIEncoderV2_array.sol#44-46) trigger an abi encoding bug:\n\t- event1_bad(bad_arr) (tests/detectors/abiencoderv2-array/0.5.10/storage_ABIEncoderV2_array.sol#45)\n",
"markdown": "Function [A.bad4()](tests/detectors/abiencoderv2-array/0.5.10/storage_ABIEncoderV2_array.sol#L44-L46) trigger an abi encoding bug:\n\t- [event1_bad(bad_arr)](tests/detectors/abiencoderv2-array/0.5.10/storage_ABIEncoderV2_array.sol#L45)\n",
"id": "41b64698d5678d4095816d22b2d431371ca18801800bcf35b077e2675724a4e6",
"description": "Function A.bad5() (tests/detectors/abiencoderv2-array/0.5.10/storage_ABIEncoderV2_array.sol#49-51) trigger an abi encoding bug:\n\t- event2_bad(s) (tests/detectors/abiencoderv2-array/0.5.10/storage_ABIEncoderV2_array.sol#50)\n",
"markdown": "Function [A.bad5()](tests/detectors/abiencoderv2-array/0.5.10/storage_ABIEncoderV2_array.sol#L49-L51) trigger an abi encoding bug:\n\t- [event2_bad(s)](tests/detectors/abiencoderv2-array/0.5.10/storage_ABIEncoderV2_array.sol#L50)\n",
"first_markdown_element": "tests/detectors/abiencoderv2-array/0.5.10/storage_ABIEncoderV2_array.sol#L49-L51",
"id": "eeb6e1300bf8056da088cb4f3e2703471fee9fdca73774ce3643fb884954d216",
"check": "abiencoderv2-array",
"impact": "High",
"confidence": "High"
@ -1220,19 +1224,19 @@
"elements": [
{
"type": "function",
"name": "bad3",
"name": "bad0",
"source_mapping": {
"start": 1101,
"length": 154,
"start": 549,
"length": 61,
"filename_used": "/GENERIC_PATH",
"filename_relative": "tests/detectors/abiencoderv2-array/0.5.10/storage_ABIEncoderV2_array.sol",
"filename_absolute": "/GENERIC_PATH",
"filename_short": "tests/detectors/abiencoderv2-array/0.5.10/storage_ABIEncoderV2_array.sol",
"is_dependency": false,
"lines": [
39,
40,
41
21,
22,
23
],
"starting_column": 3,
"ending_column": 4
@ -1352,42 +1356,42 @@
"ending_column": 2
}
},
"signature": "bad3()"
"signature": "bad0()"
}
},
{
"type": "node",
"name": "b = abi.encode(s)",
"name": "this.bad0_external(bad_arr)",
"source_mapping": {
"start": 1220,
"length": 30,
"start": 578,
"length": 27,
"filename_used": "/GENERIC_PATH",
"filename_relative": "tests/detectors/abiencoderv2-array/0.5.10/storage_ABIEncoderV2_array.sol",
"filename_absolute": "/GENERIC_PATH",
"filename_short": "tests/detectors/abiencoderv2-array/0.5.10/storage_ABIEncoderV2_array.sol",
"is_dependency": false,
"lines": [
40
22
],
"starting_column": 5,
"ending_column": 35
"ending_column": 32
},
"type_specific_fields": {
"parent": {
"type": "function",
"name": "bad3",
"name": "bad0",
"source_mapping": {
"start": 1101,
"length": 154,
"start": 549,
"length": 61,
"filename_used": "/GENERIC_PATH",
"filename_relative": "tests/detectors/abiencoderv2-array/0.5.10/storage_ABIEncoderV2_array.sol",
"filename_absolute": "/GENERIC_PATH",
"filename_short": "tests/detectors/abiencoderv2-array/0.5.10/storage_ABIEncoderV2_array.sol",
"is_dependency": false,
"lines": [
39,
40,
41
21,
22,
23
],
"starting_column": 3,
"ending_column": 4
@ -1507,15 +1511,16 @@
"ending_column": 2
}
},
"signature": "bad3()"
"signature": "bad0()"
}
}
}
}
],
"description": "Function A.bad3() (tests/detectors/abiencoderv2-array/0.5.10/storage_ABIEncoderV2_array.sol#39-41) trigger an abi encoding bug:\n\t- b = abi.encode(s) (tests/detectors/abiencoderv2-array/0.5.10/storage_ABIEncoderV2_array.sol#40)\n",
"markdown": "Function [A.bad3()](tests/detectors/abiencoderv2-array/0.5.10/storage_ABIEncoderV2_array.sol#L39-L41) trigger an abi encoding bug:\n\t- [b = abi.encode(s)](tests/detectors/abiencoderv2-array/0.5.10/storage_ABIEncoderV2_array.sol#L40)\n",
"id": "3bda232f70109507c2cc575917cb69423e6d045e3b1d084ef881a411f54b2069",
"description": "Function A.bad0() (tests/detectors/abiencoderv2-array/0.5.10/storage_ABIEncoderV2_array.sol#21-23) trigger an abi encoding bug:\n\t- this.bad0_external(bad_arr) (tests/detectors/abiencoderv2-array/0.5.10/storage_ABIEncoderV2_array.sol#22)\n",
"markdown": "Function [A.bad0()](tests/detectors/abiencoderv2-array/0.5.10/storage_ABIEncoderV2_array.sol#L21-L23) trigger an abi encoding bug:\n\t- [this.bad0_external(bad_arr)](tests/detectors/abiencoderv2-array/0.5.10/storage_ABIEncoderV2_array.sol#L22)\n",
"first_markdown_element": "tests/detectors/abiencoderv2-array/0.5.10/storage_ABIEncoderV2_array.sol#L21-L23",
"id": "f9335a48cb948e294b54605d1c63d61e863a824f3346be2db07c923896aafac0",
"check": "abiencoderv2-array",
"impact": "High",
"confidence": "High"
@ -1524,19 +1529,19 @@
"elements": [
{
"type": "function",
"name": "bad0",
"name": "bad2",
"source_mapping": {
"start": 549,
"length": 61,
"start": 877,
"length": 160,
"filename_used": "/GENERIC_PATH",
"filename_relative": "tests/detectors/abiencoderv2-array/0.5.10/storage_ABIEncoderV2_array.sol",
"filename_absolute": "/GENERIC_PATH",
"filename_short": "tests/detectors/abiencoderv2-array/0.5.10/storage_ABIEncoderV2_array.sol",
"is_dependency": false,
"lines": [
21,
22,
23
34,
35,
36
],
"starting_column": 3,
"ending_column": 4
@ -1656,42 +1661,42 @@
"ending_column": 2
}
},
"signature": "bad0()"
"signature": "bad2()"
}
},
{
"type": "node",
"name": "this.bad0_external(bad_arr)",
"name": "b = abi.encode(bad_arr)",
"source_mapping": {
"start": 578,
"length": 27,
"start": 996,
"length": 36,
"filename_used": "/GENERIC_PATH",
"filename_relative": "tests/detectors/abiencoderv2-array/0.5.10/storage_ABIEncoderV2_array.sol",
"filename_absolute": "/GENERIC_PATH",
"filename_short": "tests/detectors/abiencoderv2-array/0.5.10/storage_ABIEncoderV2_array.sol",
"is_dependency": false,
"lines": [
22
35
],
"starting_column": 5,
"ending_column": 32
"ending_column": 41
},
"type_specific_fields": {
"parent": {
"type": "function",
"name": "bad0",
"name": "bad2",
"source_mapping": {
"start": 549,
"length": 61,
"start": 877,
"length": 160,
"filename_used": "/GENERIC_PATH",
"filename_relative": "tests/detectors/abiencoderv2-array/0.5.10/storage_ABIEncoderV2_array.sol",
"filename_absolute": "/GENERIC_PATH",
"filename_short": "tests/detectors/abiencoderv2-array/0.5.10/storage_ABIEncoderV2_array.sol",
"is_dependency": false,
"lines": [
21,
22,
23
34,
35,
36
],
"starting_column": 3,
"ending_column": 4
@ -1811,15 +1816,16 @@
"ending_column": 2
}
},
"signature": "bad0()"
"signature": "bad2()"
}
}
}
}
],
"description": "Function A.bad0() (tests/detectors/abiencoderv2-array/0.5.10/storage_ABIEncoderV2_array.sol#21-23) trigger an abi encoding bug:\n\t- this.bad0_external(bad_arr) (tests/detectors/abiencoderv2-array/0.5.10/storage_ABIEncoderV2_array.sol#22)\n",
"markdown": "Function [A.bad0()](tests/detectors/abiencoderv2-array/0.5.10/storage_ABIEncoderV2_array.sol#L21-L23) trigger an abi encoding bug:\n\t- [this.bad0_external(bad_arr)](tests/detectors/abiencoderv2-array/0.5.10/storage_ABIEncoderV2_array.sol#L22)\n",
"id": "f9335a48cb948e294b54605d1c63d61e863a824f3346be2db07c923896aafac0",
"description": "Function A.bad2() (tests/detectors/abiencoderv2-array/0.5.10/storage_ABIEncoderV2_array.sol#34-36) trigger an abi encoding bug:\n\t- b = abi.encode(bad_arr) (tests/detectors/abiencoderv2-array/0.5.10/storage_ABIEncoderV2_array.sol#35)\n",
"markdown": "Function [A.bad2()](tests/detectors/abiencoderv2-array/0.5.10/storage_ABIEncoderV2_array.sol#L34-L36) trigger an abi encoding bug:\n\t- [b = abi.encode(bad_arr)](tests/detectors/abiencoderv2-array/0.5.10/storage_ABIEncoderV2_array.sol#L35)\n",
"first_markdown_element": "tests/detectors/abiencoderv2-array/0.5.10/storage_ABIEncoderV2_array.sol#L34-L36",
"id": "fb8e8ba854095891e3a490b43b126215858286a4a59902e7c63394a83befab0b",
"check": "abiencoderv2-array",
"impact": "High",
"confidence": "High"

@ -187,6 +187,7 @@
],
"description": "Test.direct() (tests/detectors/arbitrary-send/0.4.25/arbitrary_send.sol#11-13) sends eth to arbitrary user\n\tDangerous calls:\n\t- msg.sender.send(address(this).balance) (tests/detectors/arbitrary-send/0.4.25/arbitrary_send.sol#12)\n",
"markdown": "[Test.direct()](tests/detectors/arbitrary-send/0.4.25/arbitrary_send.sol#L11-L13) sends eth to arbitrary user\n\tDangerous calls:\n\t- [msg.sender.send(address(this).balance)](tests/detectors/arbitrary-send/0.4.25/arbitrary_send.sol#L12)\n",
"first_markdown_element": "tests/detectors/arbitrary-send/0.4.25/arbitrary_send.sol#L11-L13",
"id": "477cc1ab9fa3d2263400e47d09146eaed3e478f5eecf7856b59d49a2a5093a1c",
"check": "arbitrary-send",
"impact": "High",
@ -379,6 +380,7 @@
],
"description": "Test.indirect() (tests/detectors/arbitrary-send/0.4.25/arbitrary_send.sol#19-21) sends eth to arbitrary user\n\tDangerous calls:\n\t- destination.send(address(this).balance) (tests/detectors/arbitrary-send/0.4.25/arbitrary_send.sol#20)\n",
"markdown": "[Test.indirect()](tests/detectors/arbitrary-send/0.4.25/arbitrary_send.sol#L19-L21) sends eth to arbitrary user\n\tDangerous calls:\n\t- [destination.send(address(this).balance)](tests/detectors/arbitrary-send/0.4.25/arbitrary_send.sol#L20)\n",
"first_markdown_element": "tests/detectors/arbitrary-send/0.4.25/arbitrary_send.sol#L19-L21",
"id": "4759805615df746a3d8a6c068ce885d2c18c46edf411f83ae004593958caafe7",
"check": "arbitrary-send",
"impact": "High",

@ -187,6 +187,7 @@
],
"description": "Test.direct() (tests/detectors/arbitrary-send/0.5.16/arbitrary_send.sol#11-13) sends eth to arbitrary user\n\tDangerous calls:\n\t- msg.sender.send(address(this).balance) (tests/detectors/arbitrary-send/0.5.16/arbitrary_send.sol#12)\n",
"markdown": "[Test.direct()](tests/detectors/arbitrary-send/0.5.16/arbitrary_send.sol#L11-L13) sends eth to arbitrary user\n\tDangerous calls:\n\t- [msg.sender.send(address(this).balance)](tests/detectors/arbitrary-send/0.5.16/arbitrary_send.sol#L12)\n",
"first_markdown_element": "tests/detectors/arbitrary-send/0.5.16/arbitrary_send.sol#L11-L13",
"id": "9531cafd91af4d7b54f22fa933dae983077df1c51bd855c2516ffee812911f43",
"check": "arbitrary-send",
"impact": "High",
@ -379,6 +380,7 @@
],
"description": "Test.indirect() (tests/detectors/arbitrary-send/0.5.16/arbitrary_send.sol#19-21) sends eth to arbitrary user\n\tDangerous calls:\n\t- destination.send(address(this).balance) (tests/detectors/arbitrary-send/0.5.16/arbitrary_send.sol#20)\n",
"markdown": "[Test.indirect()](tests/detectors/arbitrary-send/0.5.16/arbitrary_send.sol#L19-L21) sends eth to arbitrary user\n\tDangerous calls:\n\t- [destination.send(address(this).balance)](tests/detectors/arbitrary-send/0.5.16/arbitrary_send.sol#L20)\n",
"first_markdown_element": "tests/detectors/arbitrary-send/0.5.16/arbitrary_send.sol#L19-L21",
"id": "f1395ebf21de9f8fb2c5d254c5990cce55b239c05a6a5e074813f58c6cd32834",
"check": "arbitrary-send",
"impact": "High",

@ -187,6 +187,7 @@
],
"description": "Test.direct() (tests/detectors/arbitrary-send/0.6.11/arbitrary_send.sol#11-13) sends eth to arbitrary user\n\tDangerous calls:\n\t- msg.sender.send(address(this).balance) (tests/detectors/arbitrary-send/0.6.11/arbitrary_send.sol#12)\n",
"markdown": "[Test.direct()](tests/detectors/arbitrary-send/0.6.11/arbitrary_send.sol#L11-L13) sends eth to arbitrary user\n\tDangerous calls:\n\t- [msg.sender.send(address(this).balance)](tests/detectors/arbitrary-send/0.6.11/arbitrary_send.sol#L12)\n",
"first_markdown_element": "tests/detectors/arbitrary-send/0.6.11/arbitrary_send.sol#L11-L13",
"id": "8a1de239f630f10fef9ef6a9c439fc10aad2f6caba7ee43d1a7f7bacf6028f1e",
"check": "arbitrary-send",
"impact": "High",
@ -379,6 +380,7 @@
],
"description": "Test.indirect() (tests/detectors/arbitrary-send/0.6.11/arbitrary_send.sol#19-21) sends eth to arbitrary user\n\tDangerous calls:\n\t- destination.send(address(this).balance) (tests/detectors/arbitrary-send/0.6.11/arbitrary_send.sol#20)\n",
"markdown": "[Test.indirect()](tests/detectors/arbitrary-send/0.6.11/arbitrary_send.sol#L19-L21) sends eth to arbitrary user\n\tDangerous calls:\n\t- [destination.send(address(this).balance)](tests/detectors/arbitrary-send/0.6.11/arbitrary_send.sol#L20)\n",
"first_markdown_element": "tests/detectors/arbitrary-send/0.6.11/arbitrary_send.sol#L19-L21",
"id": "f272e05d9741895fc22051ed09afa6ce4af8ad4cd74b3452224dfb29eb4b9df6",
"check": "arbitrary-send",
"impact": "High",

@ -187,6 +187,7 @@
],
"description": "Test.direct() (tests/detectors/arbitrary-send/0.7.6/arbitrary_send.sol#11-13) sends eth to arbitrary user\n\tDangerous calls:\n\t- msg.sender.send(address(this).balance) (tests/detectors/arbitrary-send/0.7.6/arbitrary_send.sol#12)\n",
"markdown": "[Test.direct()](tests/detectors/arbitrary-send/0.7.6/arbitrary_send.sol#L11-L13) sends eth to arbitrary user\n\tDangerous calls:\n\t- [msg.sender.send(address(this).balance)](tests/detectors/arbitrary-send/0.7.6/arbitrary_send.sol#L12)\n",
"first_markdown_element": "tests/detectors/arbitrary-send/0.7.6/arbitrary_send.sol#L11-L13",
"id": "90d9178119fb586af18c2298136d7f1af4d33a9b702b94d2ca0fcdbe6ee783c6",
"check": "arbitrary-send",
"impact": "High",
@ -379,6 +380,7 @@
],
"description": "Test.indirect() (tests/detectors/arbitrary-send/0.7.6/arbitrary_send.sol#19-21) sends eth to arbitrary user\n\tDangerous calls:\n\t- destination.send(address(this).balance) (tests/detectors/arbitrary-send/0.7.6/arbitrary_send.sol#20)\n",
"markdown": "[Test.indirect()](tests/detectors/arbitrary-send/0.7.6/arbitrary_send.sol#L19-L21) sends eth to arbitrary user\n\tDangerous calls:\n\t- [destination.send(address(this).balance)](tests/detectors/arbitrary-send/0.7.6/arbitrary_send.sol#L20)\n",
"first_markdown_element": "tests/detectors/arbitrary-send/0.7.6/arbitrary_send.sol#L19-L21",
"id": "3bf41470de6f5fec21d1da5741e7d63ee1d3b63cfd2646d697274f4495e3f1a9",
"check": "arbitrary-send",
"impact": "High",

@ -211,6 +211,7 @@
],
"description": "C.f() (tests/detectors/array-by-reference/0.4.25/array_by_reference.sol#4-8) passes array C.x (tests/detectors/array-by-reference/0.4.25/array_by_reference.sol#2)by reference to C.setByValue(uint256[1]) (tests/detectors/array-by-reference/0.4.25/array_by_reference.sol#21-23)which only takes arrays by value\n",
"markdown": "[C.f()](tests/detectors/array-by-reference/0.4.25/array_by_reference.sol#L4-L8) passes array [C.x](tests/detectors/array-by-reference/0.4.25/array_by_reference.sol#L2)by reference to [C.setByValue(uint256[1])](tests/detectors/array-by-reference/0.4.25/array_by_reference.sol#L21-L23)which only takes arrays by value\n",
"first_markdown_element": "tests/detectors/array-by-reference/0.4.25/array_by_reference.sol#L4-L8",
"id": "79a462bf06ae529ad099f2170100298da30766fcc06884e03436d2b53110d208",
"check": "array-by-reference",
"impact": "High",
@ -428,6 +429,7 @@
],
"description": "C.f() (tests/detectors/array-by-reference/0.4.25/array_by_reference.sol#4-8) passes array C.x (tests/detectors/array-by-reference/0.4.25/array_by_reference.sol#2)by reference to C.setByValueAndReturn(uint256[1]) (tests/detectors/array-by-reference/0.4.25/array_by_reference.sol#25-28)which only takes arrays by value\n",
"markdown": "[C.f()](tests/detectors/array-by-reference/0.4.25/array_by_reference.sol#L4-L8) passes array [C.x](tests/detectors/array-by-reference/0.4.25/array_by_reference.sol#L2)by reference to [C.setByValueAndReturn(uint256[1])](tests/detectors/array-by-reference/0.4.25/array_by_reference.sol#L25-L28)which only takes arrays by value\n",
"first_markdown_element": "tests/detectors/array-by-reference/0.4.25/array_by_reference.sol#L4-L8",
"id": "7f1eda9be40002affd2e8e31d172d3ee3374f37b1106118c79f4add7a133bbd0",
"check": "array-by-reference",
"impact": "High",
@ -671,6 +673,7 @@
],
"description": "C.g() (tests/detectors/array-by-reference/0.4.25/array_by_reference.sol#10-15) passes array C.g().y (tests/detectors/array-by-reference/0.4.25/array_by_reference.sol#11)by reference to C.setByValue(uint256[1]) (tests/detectors/array-by-reference/0.4.25/array_by_reference.sol#21-23)which only takes arrays by value\n",
"markdown": "[C.g()](tests/detectors/array-by-reference/0.4.25/array_by_reference.sol#L10-L15) passes array [C.g().y](tests/detectors/array-by-reference/0.4.25/array_by_reference.sol#L11)by reference to [C.setByValue(uint256[1])](tests/detectors/array-by-reference/0.4.25/array_by_reference.sol#L21-L23)which only takes arrays by value\n",
"first_markdown_element": "tests/detectors/array-by-reference/0.4.25/array_by_reference.sol#L10-L15",
"id": "d039169712808e785bf2e53f322c1c6fcd6b93a0a0c17f1a701addd09ed83996",
"check": "array-by-reference",
"impact": "High",
@ -915,6 +918,7 @@
],
"description": "C.g() (tests/detectors/array-by-reference/0.4.25/array_by_reference.sol#10-15) passes array C.g().y (tests/detectors/array-by-reference/0.4.25/array_by_reference.sol#11)by reference to C.setByValueAndReturn(uint256[1]) (tests/detectors/array-by-reference/0.4.25/array_by_reference.sol#25-28)which only takes arrays by value\n",
"markdown": "[C.g()](tests/detectors/array-by-reference/0.4.25/array_by_reference.sol#L10-L15) passes array [C.g().y](tests/detectors/array-by-reference/0.4.25/array_by_reference.sol#L11)by reference to [C.setByValueAndReturn(uint256[1])](tests/detectors/array-by-reference/0.4.25/array_by_reference.sol#L25-L28)which only takes arrays by value\n",
"first_markdown_element": "tests/detectors/array-by-reference/0.4.25/array_by_reference.sol#L10-L15",
"id": "8655e8acd84a6e8152acd2d9730ea0dfdda0723e09b2dcbfdbbeb8da8bd04fa5",
"check": "array-by-reference",
"impact": "High",
@ -1119,6 +1123,7 @@
],
"description": "D.f() (tests/detectors/array-by-reference/0.4.25/array_by_reference.sol#42-48) passes array D.x (tests/detectors/array-by-reference/0.4.25/array_by_reference.sol#39)by reference to C.setByValue(uint256[1]) (tests/detectors/array-by-reference/0.4.25/array_by_reference.sol#21-23)which only takes arrays by value\n",
"markdown": "[D.f()](tests/detectors/array-by-reference/0.4.25/array_by_reference.sol#L42-L48) passes array [D.x](tests/detectors/array-by-reference/0.4.25/array_by_reference.sol#L39)by reference to [C.setByValue(uint256[1])](tests/detectors/array-by-reference/0.4.25/array_by_reference.sol#L21-L23)which only takes arrays by value\n",
"first_markdown_element": "tests/detectors/array-by-reference/0.4.25/array_by_reference.sol#L42-L48",
"id": "1520955a53c36e391abbaf648a91a5a12d432f0f4746b0a8187d0988a6a66846",
"check": "array-by-reference",
"impact": "High",
@ -1324,6 +1329,7 @@
],
"description": "D.f() (tests/detectors/array-by-reference/0.4.25/array_by_reference.sol#42-48) passes array D.x (tests/detectors/array-by-reference/0.4.25/array_by_reference.sol#39)by reference to C.setByValueAndReturn(uint256[1]) (tests/detectors/array-by-reference/0.4.25/array_by_reference.sol#25-28)which only takes arrays by value\n",
"markdown": "[D.f()](tests/detectors/array-by-reference/0.4.25/array_by_reference.sol#L42-L48) passes array [D.x](tests/detectors/array-by-reference/0.4.25/array_by_reference.sol#L39)by reference to [C.setByValueAndReturn(uint256[1])](tests/detectors/array-by-reference/0.4.25/array_by_reference.sol#L25-L28)which only takes arrays by value\n",
"first_markdown_element": "tests/detectors/array-by-reference/0.4.25/array_by_reference.sol#L42-L48",
"id": "019912974eabe7e8b1e67ca05b342e5106de13fa93fa0adf599a4259c425bd54",
"check": "array-by-reference",
"impact": "High",

@ -211,6 +211,7 @@
],
"description": "C.f() (tests/detectors/array-by-reference/0.5.16/array_by_reference.sol#4-8) passes array C.x (tests/detectors/array-by-reference/0.5.16/array_by_reference.sol#2)by reference to C.setByValue(uint256[1]) (tests/detectors/array-by-reference/0.5.16/array_by_reference.sol#21-23)which only takes arrays by value\n",
"markdown": "[C.f()](tests/detectors/array-by-reference/0.5.16/array_by_reference.sol#L4-L8) passes array [C.x](tests/detectors/array-by-reference/0.5.16/array_by_reference.sol#L2)by reference to [C.setByValue(uint256[1])](tests/detectors/array-by-reference/0.5.16/array_by_reference.sol#L21-L23)which only takes arrays by value\n",
"first_markdown_element": "tests/detectors/array-by-reference/0.5.16/array_by_reference.sol#L4-L8",
"id": "79a462bf06ae529ad099f2170100298da30766fcc06884e03436d2b53110d208",
"check": "array-by-reference",
"impact": "High",
@ -428,6 +429,7 @@
],
"description": "C.f() (tests/detectors/array-by-reference/0.5.16/array_by_reference.sol#4-8) passes array C.x (tests/detectors/array-by-reference/0.5.16/array_by_reference.sol#2)by reference to C.setByValueAndReturn(uint256[1]) (tests/detectors/array-by-reference/0.5.16/array_by_reference.sol#25-28)which only takes arrays by value\n",
"markdown": "[C.f()](tests/detectors/array-by-reference/0.5.16/array_by_reference.sol#L4-L8) passes array [C.x](tests/detectors/array-by-reference/0.5.16/array_by_reference.sol#L2)by reference to [C.setByValueAndReturn(uint256[1])](tests/detectors/array-by-reference/0.5.16/array_by_reference.sol#L25-L28)which only takes arrays by value\n",
"first_markdown_element": "tests/detectors/array-by-reference/0.5.16/array_by_reference.sol#L4-L8",
"id": "7f1eda9be40002affd2e8e31d172d3ee3374f37b1106118c79f4add7a133bbd0",
"check": "array-by-reference",
"impact": "High",
@ -671,6 +673,7 @@
],
"description": "C.g() (tests/detectors/array-by-reference/0.5.16/array_by_reference.sol#10-15) passes array C.g().y (tests/detectors/array-by-reference/0.5.16/array_by_reference.sol#11)by reference to C.setByValue(uint256[1]) (tests/detectors/array-by-reference/0.5.16/array_by_reference.sol#21-23)which only takes arrays by value\n",
"markdown": "[C.g()](tests/detectors/array-by-reference/0.5.16/array_by_reference.sol#L10-L15) passes array [C.g().y](tests/detectors/array-by-reference/0.5.16/array_by_reference.sol#L11)by reference to [C.setByValue(uint256[1])](tests/detectors/array-by-reference/0.5.16/array_by_reference.sol#L21-L23)which only takes arrays by value\n",
"first_markdown_element": "tests/detectors/array-by-reference/0.5.16/array_by_reference.sol#L10-L15",
"id": "d039169712808e785bf2e53f322c1c6fcd6b93a0a0c17f1a701addd09ed83996",
"check": "array-by-reference",
"impact": "High",
@ -915,6 +918,7 @@
],
"description": "C.g() (tests/detectors/array-by-reference/0.5.16/array_by_reference.sol#10-15) passes array C.g().y (tests/detectors/array-by-reference/0.5.16/array_by_reference.sol#11)by reference to C.setByValueAndReturn(uint256[1]) (tests/detectors/array-by-reference/0.5.16/array_by_reference.sol#25-28)which only takes arrays by value\n",
"markdown": "[C.g()](tests/detectors/array-by-reference/0.5.16/array_by_reference.sol#L10-L15) passes array [C.g().y](tests/detectors/array-by-reference/0.5.16/array_by_reference.sol#L11)by reference to [C.setByValueAndReturn(uint256[1])](tests/detectors/array-by-reference/0.5.16/array_by_reference.sol#L25-L28)which only takes arrays by value\n",
"first_markdown_element": "tests/detectors/array-by-reference/0.5.16/array_by_reference.sol#L10-L15",
"id": "8655e8acd84a6e8152acd2d9730ea0dfdda0723e09b2dcbfdbbeb8da8bd04fa5",
"check": "array-by-reference",
"impact": "High",
@ -1119,6 +1123,7 @@
],
"description": "D.f() (tests/detectors/array-by-reference/0.5.16/array_by_reference.sol#42-48) passes array D.x (tests/detectors/array-by-reference/0.5.16/array_by_reference.sol#39)by reference to C.setByValue(uint256[1]) (tests/detectors/array-by-reference/0.5.16/array_by_reference.sol#21-23)which only takes arrays by value\n",
"markdown": "[D.f()](tests/detectors/array-by-reference/0.5.16/array_by_reference.sol#L42-L48) passes array [D.x](tests/detectors/array-by-reference/0.5.16/array_by_reference.sol#L39)by reference to [C.setByValue(uint256[1])](tests/detectors/array-by-reference/0.5.16/array_by_reference.sol#L21-L23)which only takes arrays by value\n",
"first_markdown_element": "tests/detectors/array-by-reference/0.5.16/array_by_reference.sol#L42-L48",
"id": "1520955a53c36e391abbaf648a91a5a12d432f0f4746b0a8187d0988a6a66846",
"check": "array-by-reference",
"impact": "High",
@ -1324,6 +1329,7 @@
],
"description": "D.f() (tests/detectors/array-by-reference/0.5.16/array_by_reference.sol#42-48) passes array D.x (tests/detectors/array-by-reference/0.5.16/array_by_reference.sol#39)by reference to C.setByValueAndReturn(uint256[1]) (tests/detectors/array-by-reference/0.5.16/array_by_reference.sol#25-28)which only takes arrays by value\n",
"markdown": "[D.f()](tests/detectors/array-by-reference/0.5.16/array_by_reference.sol#L42-L48) passes array [D.x](tests/detectors/array-by-reference/0.5.16/array_by_reference.sol#L39)by reference to [C.setByValueAndReturn(uint256[1])](tests/detectors/array-by-reference/0.5.16/array_by_reference.sol#L25-L28)which only takes arrays by value\n",
"first_markdown_element": "tests/detectors/array-by-reference/0.5.16/array_by_reference.sol#L42-L48",
"id": "019912974eabe7e8b1e67ca05b342e5106de13fa93fa0adf599a4259c425bd54",
"check": "array-by-reference",
"impact": "High",

@ -211,6 +211,7 @@
],
"description": "C.f() (tests/detectors/array-by-reference/0.6.11/array_by_reference.sol#4-8) passes array C.x (tests/detectors/array-by-reference/0.6.11/array_by_reference.sol#2)by reference to C.setByValue(uint256[1]) (tests/detectors/array-by-reference/0.6.11/array_by_reference.sol#21-23)which only takes arrays by value\n",
"markdown": "[C.f()](tests/detectors/array-by-reference/0.6.11/array_by_reference.sol#L4-L8) passes array [C.x](tests/detectors/array-by-reference/0.6.11/array_by_reference.sol#L2)by reference to [C.setByValue(uint256[1])](tests/detectors/array-by-reference/0.6.11/array_by_reference.sol#L21-L23)which only takes arrays by value\n",
"first_markdown_element": "tests/detectors/array-by-reference/0.6.11/array_by_reference.sol#L4-L8",
"id": "79a462bf06ae529ad099f2170100298da30766fcc06884e03436d2b53110d208",
"check": "array-by-reference",
"impact": "High",
@ -428,6 +429,7 @@
],
"description": "C.f() (tests/detectors/array-by-reference/0.6.11/array_by_reference.sol#4-8) passes array C.x (tests/detectors/array-by-reference/0.6.11/array_by_reference.sol#2)by reference to C.setByValueAndReturn(uint256[1]) (tests/detectors/array-by-reference/0.6.11/array_by_reference.sol#25-28)which only takes arrays by value\n",
"markdown": "[C.f()](tests/detectors/array-by-reference/0.6.11/array_by_reference.sol#L4-L8) passes array [C.x](tests/detectors/array-by-reference/0.6.11/array_by_reference.sol#L2)by reference to [C.setByValueAndReturn(uint256[1])](tests/detectors/array-by-reference/0.6.11/array_by_reference.sol#L25-L28)which only takes arrays by value\n",
"first_markdown_element": "tests/detectors/array-by-reference/0.6.11/array_by_reference.sol#L4-L8",
"id": "7f1eda9be40002affd2e8e31d172d3ee3374f37b1106118c79f4add7a133bbd0",
"check": "array-by-reference",
"impact": "High",
@ -671,6 +673,7 @@
],
"description": "C.g() (tests/detectors/array-by-reference/0.6.11/array_by_reference.sol#10-15) passes array C.g().y (tests/detectors/array-by-reference/0.6.11/array_by_reference.sol#11)by reference to C.setByValue(uint256[1]) (tests/detectors/array-by-reference/0.6.11/array_by_reference.sol#21-23)which only takes arrays by value\n",
"markdown": "[C.g()](tests/detectors/array-by-reference/0.6.11/array_by_reference.sol#L10-L15) passes array [C.g().y](tests/detectors/array-by-reference/0.6.11/array_by_reference.sol#L11)by reference to [C.setByValue(uint256[1])](tests/detectors/array-by-reference/0.6.11/array_by_reference.sol#L21-L23)which only takes arrays by value\n",
"first_markdown_element": "tests/detectors/array-by-reference/0.6.11/array_by_reference.sol#L10-L15",
"id": "d039169712808e785bf2e53f322c1c6fcd6b93a0a0c17f1a701addd09ed83996",
"check": "array-by-reference",
"impact": "High",
@ -915,6 +918,7 @@
],
"description": "C.g() (tests/detectors/array-by-reference/0.6.11/array_by_reference.sol#10-15) passes array C.g().y (tests/detectors/array-by-reference/0.6.11/array_by_reference.sol#11)by reference to C.setByValueAndReturn(uint256[1]) (tests/detectors/array-by-reference/0.6.11/array_by_reference.sol#25-28)which only takes arrays by value\n",
"markdown": "[C.g()](tests/detectors/array-by-reference/0.6.11/array_by_reference.sol#L10-L15) passes array [C.g().y](tests/detectors/array-by-reference/0.6.11/array_by_reference.sol#L11)by reference to [C.setByValueAndReturn(uint256[1])](tests/detectors/array-by-reference/0.6.11/array_by_reference.sol#L25-L28)which only takes arrays by value\n",
"first_markdown_element": "tests/detectors/array-by-reference/0.6.11/array_by_reference.sol#L10-L15",
"id": "8655e8acd84a6e8152acd2d9730ea0dfdda0723e09b2dcbfdbbeb8da8bd04fa5",
"check": "array-by-reference",
"impact": "High",
@ -1119,6 +1123,7 @@
],
"description": "D.f() (tests/detectors/array-by-reference/0.6.11/array_by_reference.sol#42-48) passes array D.x (tests/detectors/array-by-reference/0.6.11/array_by_reference.sol#39)by reference to C.setByValue(uint256[1]) (tests/detectors/array-by-reference/0.6.11/array_by_reference.sol#21-23)which only takes arrays by value\n",
"markdown": "[D.f()](tests/detectors/array-by-reference/0.6.11/array_by_reference.sol#L42-L48) passes array [D.x](tests/detectors/array-by-reference/0.6.11/array_by_reference.sol#L39)by reference to [C.setByValue(uint256[1])](tests/detectors/array-by-reference/0.6.11/array_by_reference.sol#L21-L23)which only takes arrays by value\n",
"first_markdown_element": "tests/detectors/array-by-reference/0.6.11/array_by_reference.sol#L42-L48",
"id": "1520955a53c36e391abbaf648a91a5a12d432f0f4746b0a8187d0988a6a66846",
"check": "array-by-reference",
"impact": "High",
@ -1324,6 +1329,7 @@
],
"description": "D.f() (tests/detectors/array-by-reference/0.6.11/array_by_reference.sol#42-48) passes array D.x (tests/detectors/array-by-reference/0.6.11/array_by_reference.sol#39)by reference to C.setByValueAndReturn(uint256[1]) (tests/detectors/array-by-reference/0.6.11/array_by_reference.sol#25-28)which only takes arrays by value\n",
"markdown": "[D.f()](tests/detectors/array-by-reference/0.6.11/array_by_reference.sol#L42-L48) passes array [D.x](tests/detectors/array-by-reference/0.6.11/array_by_reference.sol#L39)by reference to [C.setByValueAndReturn(uint256[1])](tests/detectors/array-by-reference/0.6.11/array_by_reference.sol#L25-L28)which only takes arrays by value\n",
"first_markdown_element": "tests/detectors/array-by-reference/0.6.11/array_by_reference.sol#L42-L48",
"id": "019912974eabe7e8b1e67ca05b342e5106de13fa93fa0adf599a4259c425bd54",
"check": "array-by-reference",
"impact": "High",

@ -211,6 +211,7 @@
],
"description": "C.f() (tests/detectors/array-by-reference/0.7.6/array_by_reference.sol#4-8) passes array C.x (tests/detectors/array-by-reference/0.7.6/array_by_reference.sol#2)by reference to C.setByValue(uint256[1]) (tests/detectors/array-by-reference/0.7.6/array_by_reference.sol#21-23)which only takes arrays by value\n",
"markdown": "[C.f()](tests/detectors/array-by-reference/0.7.6/array_by_reference.sol#L4-L8) passes array [C.x](tests/detectors/array-by-reference/0.7.6/array_by_reference.sol#L2)by reference to [C.setByValue(uint256[1])](tests/detectors/array-by-reference/0.7.6/array_by_reference.sol#L21-L23)which only takes arrays by value\n",
"first_markdown_element": "tests/detectors/array-by-reference/0.7.6/array_by_reference.sol#L4-L8",
"id": "79a462bf06ae529ad099f2170100298da30766fcc06884e03436d2b53110d208",
"check": "array-by-reference",
"impact": "High",
@ -428,6 +429,7 @@
],
"description": "C.f() (tests/detectors/array-by-reference/0.7.6/array_by_reference.sol#4-8) passes array C.x (tests/detectors/array-by-reference/0.7.6/array_by_reference.sol#2)by reference to C.setByValueAndReturn(uint256[1]) (tests/detectors/array-by-reference/0.7.6/array_by_reference.sol#25-28)which only takes arrays by value\n",
"markdown": "[C.f()](tests/detectors/array-by-reference/0.7.6/array_by_reference.sol#L4-L8) passes array [C.x](tests/detectors/array-by-reference/0.7.6/array_by_reference.sol#L2)by reference to [C.setByValueAndReturn(uint256[1])](tests/detectors/array-by-reference/0.7.6/array_by_reference.sol#L25-L28)which only takes arrays by value\n",
"first_markdown_element": "tests/detectors/array-by-reference/0.7.6/array_by_reference.sol#L4-L8",
"id": "7f1eda9be40002affd2e8e31d172d3ee3374f37b1106118c79f4add7a133bbd0",
"check": "array-by-reference",
"impact": "High",
@ -671,6 +673,7 @@
],
"description": "C.g() (tests/detectors/array-by-reference/0.7.6/array_by_reference.sol#10-15) passes array C.g().y (tests/detectors/array-by-reference/0.7.6/array_by_reference.sol#11)by reference to C.setByValue(uint256[1]) (tests/detectors/array-by-reference/0.7.6/array_by_reference.sol#21-23)which only takes arrays by value\n",
"markdown": "[C.g()](tests/detectors/array-by-reference/0.7.6/array_by_reference.sol#L10-L15) passes array [C.g().y](tests/detectors/array-by-reference/0.7.6/array_by_reference.sol#L11)by reference to [C.setByValue(uint256[1])](tests/detectors/array-by-reference/0.7.6/array_by_reference.sol#L21-L23)which only takes arrays by value\n",
"first_markdown_element": "tests/detectors/array-by-reference/0.7.6/array_by_reference.sol#L10-L15",
"id": "d039169712808e785bf2e53f322c1c6fcd6b93a0a0c17f1a701addd09ed83996",
"check": "array-by-reference",
"impact": "High",
@ -915,6 +918,7 @@
],
"description": "C.g() (tests/detectors/array-by-reference/0.7.6/array_by_reference.sol#10-15) passes array C.g().y (tests/detectors/array-by-reference/0.7.6/array_by_reference.sol#11)by reference to C.setByValueAndReturn(uint256[1]) (tests/detectors/array-by-reference/0.7.6/array_by_reference.sol#25-28)which only takes arrays by value\n",
"markdown": "[C.g()](tests/detectors/array-by-reference/0.7.6/array_by_reference.sol#L10-L15) passes array [C.g().y](tests/detectors/array-by-reference/0.7.6/array_by_reference.sol#L11)by reference to [C.setByValueAndReturn(uint256[1])](tests/detectors/array-by-reference/0.7.6/array_by_reference.sol#L25-L28)which only takes arrays by value\n",
"first_markdown_element": "tests/detectors/array-by-reference/0.7.6/array_by_reference.sol#L10-L15",
"id": "8655e8acd84a6e8152acd2d9730ea0dfdda0723e09b2dcbfdbbeb8da8bd04fa5",
"check": "array-by-reference",
"impact": "High",
@ -1119,6 +1123,7 @@
],
"description": "D.f() (tests/detectors/array-by-reference/0.7.6/array_by_reference.sol#42-48) passes array D.x (tests/detectors/array-by-reference/0.7.6/array_by_reference.sol#39)by reference to C.setByValue(uint256[1]) (tests/detectors/array-by-reference/0.7.6/array_by_reference.sol#21-23)which only takes arrays by value\n",
"markdown": "[D.f()](tests/detectors/array-by-reference/0.7.6/array_by_reference.sol#L42-L48) passes array [D.x](tests/detectors/array-by-reference/0.7.6/array_by_reference.sol#L39)by reference to [C.setByValue(uint256[1])](tests/detectors/array-by-reference/0.7.6/array_by_reference.sol#L21-L23)which only takes arrays by value\n",
"first_markdown_element": "tests/detectors/array-by-reference/0.7.6/array_by_reference.sol#L42-L48",
"id": "1520955a53c36e391abbaf648a91a5a12d432f0f4746b0a8187d0988a6a66846",
"check": "array-by-reference",
"impact": "High",
@ -1324,6 +1329,7 @@
],
"description": "D.f() (tests/detectors/array-by-reference/0.7.6/array_by_reference.sol#42-48) passes array D.x (tests/detectors/array-by-reference/0.7.6/array_by_reference.sol#39)by reference to C.setByValueAndReturn(uint256[1]) (tests/detectors/array-by-reference/0.7.6/array_by_reference.sol#25-28)which only takes arrays by value\n",
"markdown": "[D.f()](tests/detectors/array-by-reference/0.7.6/array_by_reference.sol#L42-L48) passes array [D.x](tests/detectors/array-by-reference/0.7.6/array_by_reference.sol#L39)by reference to [C.setByValueAndReturn(uint256[1])](tests/detectors/array-by-reference/0.7.6/array_by_reference.sol#L25-L28)which only takes arrays by value\n",
"first_markdown_element": "tests/detectors/array-by-reference/0.7.6/array_by_reference.sol#L42-L48",
"id": "019912974eabe7e8b1e67ca05b342e5106de13fa93fa0adf599a4259c425bd54",
"check": "array-by-reference",
"impact": "High",

@ -176,6 +176,7 @@
],
"description": "GetCode.at(address) (tests/detectors/assembly/0.4.25/inline_assembly_contract.sol#6-20) uses assembly\n\t- INLINE ASM (tests/detectors/assembly/0.4.25/inline_assembly_contract.sol#7-20)\n",
"markdown": "[GetCode.at(address)](tests/detectors/assembly/0.4.25/inline_assembly_contract.sol#L6-L20) uses assembly\n\t- [INLINE ASM](tests/detectors/assembly/0.4.25/inline_assembly_contract.sol#L7-L20)\n",
"first_markdown_element": "tests/detectors/assembly/0.4.25/inline_assembly_contract.sol#L6-L20",
"id": "37ca62e9af93d1648d3a1aa845426ec5395eab836277e3a8baa52621bf1df7c3",
"check": "assembly",
"impact": "Informational",

@ -204,6 +204,7 @@
],
"description": "VectorSum.sumAsm(uint256[]) (tests/detectors/assembly/0.4.25/inline_assembly_library.sol#16-22) uses assembly\n\t- INLINE ASM (tests/detectors/assembly/0.4.25/inline_assembly_library.sol#18-21)\n",
"markdown": "[VectorSum.sumAsm(uint256[])](tests/detectors/assembly/0.4.25/inline_assembly_library.sol#L16-L22) uses assembly\n\t- [INLINE ASM](tests/detectors/assembly/0.4.25/inline_assembly_library.sol#L18-L21)\n",
"first_markdown_element": "tests/detectors/assembly/0.4.25/inline_assembly_library.sol#L16-L22",
"id": "7009ef6498fa29901fbf3e9e1971a19f6fa48c87be3b2592c632e05a4321e1d3",
"check": "assembly",
"impact": "Informational",
@ -463,6 +464,7 @@
],
"description": "VectorSum.sumPureAsm(uint256[]) (tests/detectors/assembly/0.4.25/inline_assembly_library.sol#25-47) uses assembly\n\t- INLINE ASM (tests/detectors/assembly/0.4.25/inline_assembly_library.sol#26-47)\n",
"markdown": "[VectorSum.sumPureAsm(uint256[])](tests/detectors/assembly/0.4.25/inline_assembly_library.sol#L25-L47) uses assembly\n\t- [INLINE ASM](tests/detectors/assembly/0.4.25/inline_assembly_library.sol#L26-L47)\n",
"first_markdown_element": "tests/detectors/assembly/0.4.25/inline_assembly_library.sol#L25-L47",
"id": "e6c5e2eab9e98c206f4092988fc006a6333e737680610667cba168fe739a3cf6",
"check": "assembly",
"impact": "Informational",

@ -175,6 +175,7 @@
],
"description": "GetCode.at(address) (tests/detectors/assembly/0.5.16/inline_assembly_contract.sol#6-20) uses assembly\n\t- INLINE ASM (tests/detectors/assembly/0.5.16/inline_assembly_contract.sol#7-19)\n",
"markdown": "[GetCode.at(address)](tests/detectors/assembly/0.5.16/inline_assembly_contract.sol#L6-L20) uses assembly\n\t- [INLINE ASM](tests/detectors/assembly/0.5.16/inline_assembly_contract.sol#L7-L19)\n",
"first_markdown_element": "tests/detectors/assembly/0.5.16/inline_assembly_contract.sol#L6-L20",
"id": "ac5f8f89c2d7459785200d5d861616e04a1bbcfbb2a39cef8bef6a03222c7c21",
"check": "assembly",
"impact": "Informational",

@ -203,6 +203,7 @@
],
"description": "VectorSum.sumAsm(uint256[]) (tests/detectors/assembly/0.5.16/inline_assembly_library.sol#16-22) uses assembly\n\t- INLINE ASM (tests/detectors/assembly/0.5.16/inline_assembly_library.sol#18-20)\n",
"markdown": "[VectorSum.sumAsm(uint256[])](tests/detectors/assembly/0.5.16/inline_assembly_library.sol#L16-L22) uses assembly\n\t- [INLINE ASM](tests/detectors/assembly/0.5.16/inline_assembly_library.sol#L18-L20)\n",
"first_markdown_element": "tests/detectors/assembly/0.5.16/inline_assembly_library.sol#L16-L22",
"id": "abf9dce26719358da77702aa40f23104cc83044d0b1cffb492e318360fb72b6f",
"check": "assembly",
"impact": "Informational",
@ -461,6 +462,7 @@
],
"description": "VectorSum.sumPureAsm(uint256[]) (tests/detectors/assembly/0.5.16/inline_assembly_library.sol#25-47) uses assembly\n\t- INLINE ASM (tests/detectors/assembly/0.5.16/inline_assembly_library.sol#26-46)\n",
"markdown": "[VectorSum.sumPureAsm(uint256[])](tests/detectors/assembly/0.5.16/inline_assembly_library.sol#L25-L47) uses assembly\n\t- [INLINE ASM](tests/detectors/assembly/0.5.16/inline_assembly_library.sol#L26-L46)\n",
"first_markdown_element": "tests/detectors/assembly/0.5.16/inline_assembly_library.sol#L25-L47",
"id": "c0078585e7d2fe02dda5ea48ddb48b40916db51afbee078f77bea648d1aa0315",
"check": "assembly",
"impact": "Informational",

@ -175,6 +175,7 @@
],
"description": "GetCode.at(address) (tests/detectors/assembly/0.6.11/inline_assembly_contract.sol#4-18) uses assembly\n\t- INLINE ASM (tests/detectors/assembly/0.6.11/inline_assembly_contract.sol#5-17)\n",
"markdown": "[GetCode.at(address)](tests/detectors/assembly/0.6.11/inline_assembly_contract.sol#L4-L18) uses assembly\n\t- [INLINE ASM](tests/detectors/assembly/0.6.11/inline_assembly_contract.sol#L5-L17)\n",
"first_markdown_element": "tests/detectors/assembly/0.6.11/inline_assembly_contract.sol#L4-L18",
"id": "00e51f7f223289ebaad73cd6e77329b37ff5be360d9a682614cb6b72b8e3d9b4",
"check": "assembly",
"impact": "Informational",

@ -203,6 +203,7 @@
],
"description": "VectorSum.sumAsm(uint256[]) (tests/detectors/assembly/0.6.11/inline_assembly_library.sol#14-20) uses assembly\n\t- INLINE ASM (tests/detectors/assembly/0.6.11/inline_assembly_library.sol#16-18)\n",
"markdown": "[VectorSum.sumAsm(uint256[])](tests/detectors/assembly/0.6.11/inline_assembly_library.sol#L14-L20) uses assembly\n\t- [INLINE ASM](tests/detectors/assembly/0.6.11/inline_assembly_library.sol#L16-L18)\n",
"first_markdown_element": "tests/detectors/assembly/0.6.11/inline_assembly_library.sol#L14-L20",
"id": "a8d71513166310212c49c4edecbdf8fbc3040b1cb5b5756f0ad1971ae7d4cdb1",
"check": "assembly",
"impact": "Informational",
@ -461,6 +462,7 @@
],
"description": "VectorSum.sumPureAsm(uint256[]) (tests/detectors/assembly/0.6.11/inline_assembly_library.sol#23-45) uses assembly\n\t- INLINE ASM (tests/detectors/assembly/0.6.11/inline_assembly_library.sol#24-44)\n",
"markdown": "[VectorSum.sumPureAsm(uint256[])](tests/detectors/assembly/0.6.11/inline_assembly_library.sol#L23-L45) uses assembly\n\t- [INLINE ASM](tests/detectors/assembly/0.6.11/inline_assembly_library.sol#L24-L44)\n",
"first_markdown_element": "tests/detectors/assembly/0.6.11/inline_assembly_library.sol#L23-L45",
"id": "5964c7440a9efb78bf78544bcdc60c789e3d9dff73438108bcb07ac98d60876a",
"check": "assembly",
"impact": "Informational",

@ -175,6 +175,7 @@
],
"description": "GetCode.at(address) (tests/detectors/assembly/0.7.6/inline_assembly_contract.sol#4-18) uses assembly\n\t- INLINE ASM (tests/detectors/assembly/0.7.6/inline_assembly_contract.sol#5-17)\n",
"markdown": "[GetCode.at(address)](tests/detectors/assembly/0.7.6/inline_assembly_contract.sol#L4-L18) uses assembly\n\t- [INLINE ASM](tests/detectors/assembly/0.7.6/inline_assembly_contract.sol#L5-L17)\n",
"first_markdown_element": "tests/detectors/assembly/0.7.6/inline_assembly_contract.sol#L4-L18",
"id": "3b2ace4ab64f4fdd4436ae22d38a7db3efe8d2b65dca270af7fb18f281323670",
"check": "assembly",
"impact": "Informational",

@ -203,6 +203,7 @@
],
"description": "VectorSum.sumAsm(uint256[]) (tests/detectors/assembly/0.7.6/inline_assembly_library.sol#14-20) uses assembly\n\t- INLINE ASM (tests/detectors/assembly/0.7.6/inline_assembly_library.sol#16-18)\n",
"markdown": "[VectorSum.sumAsm(uint256[])](tests/detectors/assembly/0.7.6/inline_assembly_library.sol#L14-L20) uses assembly\n\t- [INLINE ASM](tests/detectors/assembly/0.7.6/inline_assembly_library.sol#L16-L18)\n",
"first_markdown_element": "tests/detectors/assembly/0.7.6/inline_assembly_library.sol#L14-L20",
"id": "a83582beb2c0460617fa82fbdfc38a050004e285749b17141b63e8051062248b",
"check": "assembly",
"impact": "Informational",
@ -461,6 +462,7 @@
],
"description": "VectorSum.sumPureAsm(uint256[]) (tests/detectors/assembly/0.7.6/inline_assembly_library.sol#23-45) uses assembly\n\t- INLINE ASM (tests/detectors/assembly/0.7.6/inline_assembly_library.sol#24-44)\n",
"markdown": "[VectorSum.sumPureAsm(uint256[])](tests/detectors/assembly/0.7.6/inline_assembly_library.sol#L23-L45) uses assembly\n\t- [INLINE ASM](tests/detectors/assembly/0.7.6/inline_assembly_library.sol#L24-L44)\n",
"first_markdown_element": "tests/detectors/assembly/0.7.6/inline_assembly_library.sol#L23-L45",
"id": "5cafb3e9d7d87c17203cf2c296eeec7de6b774b2a8d71908f8cfc9b8d916cb4b",
"check": "assembly",
"impact": "Informational",

@ -183,6 +183,7 @@
],
"description": "A.bad0() (tests/detectors/assert-state-change/0.4.25/assert_state_change.sol#6-8) has an assert() call which possibly changes state.\n\t-assert(bool)((s_a += 1) > 10) (tests/detectors/assert-state-change/0.4.25/assert_state_change.sol#7)\nConsider using require() or change the invariant to not modify the state.\n",
"markdown": "[A.bad0()](tests/detectors/assert-state-change/0.4.25/assert_state_change.sol#L6-L8) has an assert() call which possibly changes state.\n\t-[assert(bool)((s_a += 1) > 10)](tests/detectors/assert-state-change/0.4.25/assert_state_change.sol#L7)\nConsider using require() or change the invariant to not modify the state.\n",
"first_markdown_element": "tests/detectors/assert-state-change/0.4.25/assert_state_change.sol#L6-L8",
"id": "a01104ede08ddc5107a2d63d851930d477642029aeef70d6cb44eb2a640b282a",
"check": "assert-state-change",
"impact": "Informational",
@ -371,6 +372,7 @@
],
"description": "A.bad1(uint256) (tests/detectors/assert-state-change/0.4.25/assert_state_change.sol#11-13) has an assert() call which possibly changes state.\n\t-assert(bool)((s_a += a) > 10) (tests/detectors/assert-state-change/0.4.25/assert_state_change.sol#12)\nConsider using require() or change the invariant to not modify the state.\n",
"markdown": "[A.bad1(uint256)](tests/detectors/assert-state-change/0.4.25/assert_state_change.sol#L11-L13) has an assert() call which possibly changes state.\n\t-[assert(bool)((s_a += a) > 10)](tests/detectors/assert-state-change/0.4.25/assert_state_change.sol#L12)\nConsider using require() or change the invariant to not modify the state.\n",
"first_markdown_element": "tests/detectors/assert-state-change/0.4.25/assert_state_change.sol#L11-L13",
"id": "849934acf882563bb79caed681f16909f03795bbbbe8338455d104d66a52314c",
"check": "assert-state-change",
"impact": "Informational",
@ -559,6 +561,7 @@
],
"description": "A.bad2() (tests/detectors/assert-state-change/0.4.25/assert_state_change.sol#19-21) has an assert() call which possibly changes state.\n\t-assert(bool)(bad2_callee()) (tests/detectors/assert-state-change/0.4.25/assert_state_change.sol#20)\nConsider using require() or change the invariant to not modify the state.\n",
"markdown": "[A.bad2()](tests/detectors/assert-state-change/0.4.25/assert_state_change.sol#L19-L21) has an assert() call which possibly changes state.\n\t-[assert(bool)(bad2_callee())](tests/detectors/assert-state-change/0.4.25/assert_state_change.sol#L20)\nConsider using require() or change the invariant to not modify the state.\n",
"first_markdown_element": "tests/detectors/assert-state-change/0.4.25/assert_state_change.sol#L19-L21",
"id": "47c8c39b084f8d339822d44f892cb049c1a3834f52fd48d2dcef80bac56996a3",
"check": "assert-state-change",
"impact": "Informational",

@ -183,6 +183,7 @@
],
"description": "A.bad0() (tests/detectors/assert-state-change/0.5.16/assert_state_change.sol#6-8) has an assert() call which possibly changes state.\n\t-assert(bool)((s_a += 1) > 10) (tests/detectors/assert-state-change/0.5.16/assert_state_change.sol#7)\nConsider using require() or change the invariant to not modify the state.\n",
"markdown": "[A.bad0()](tests/detectors/assert-state-change/0.5.16/assert_state_change.sol#L6-L8) has an assert() call which possibly changes state.\n\t-[assert(bool)((s_a += 1) > 10)](tests/detectors/assert-state-change/0.5.16/assert_state_change.sol#L7)\nConsider using require() or change the invariant to not modify the state.\n",
"first_markdown_element": "tests/detectors/assert-state-change/0.5.16/assert_state_change.sol#L6-L8",
"id": "ed7344e23d057576887c7e524b215bd0b52464ce035f686bab51b271460e43a0",
"check": "assert-state-change",
"impact": "Informational",
@ -371,6 +372,7 @@
],
"description": "A.bad1(uint256) (tests/detectors/assert-state-change/0.5.16/assert_state_change.sol#11-13) has an assert() call which possibly changes state.\n\t-assert(bool)((s_a += a) > 10) (tests/detectors/assert-state-change/0.5.16/assert_state_change.sol#12)\nConsider using require() or change the invariant to not modify the state.\n",
"markdown": "[A.bad1(uint256)](tests/detectors/assert-state-change/0.5.16/assert_state_change.sol#L11-L13) has an assert() call which possibly changes state.\n\t-[assert(bool)((s_a += a) > 10)](tests/detectors/assert-state-change/0.5.16/assert_state_change.sol#L12)\nConsider using require() or change the invariant to not modify the state.\n",
"first_markdown_element": "tests/detectors/assert-state-change/0.5.16/assert_state_change.sol#L11-L13",
"id": "ea912d34e8adabfd2ce93ecd5723df8d2e7ebec7e66de5fc56f3304c780488b3",
"check": "assert-state-change",
"impact": "Informational",
@ -559,6 +561,7 @@
],
"description": "A.bad2() (tests/detectors/assert-state-change/0.5.16/assert_state_change.sol#19-21) has an assert() call which possibly changes state.\n\t-assert(bool)(bad2_callee()) (tests/detectors/assert-state-change/0.5.16/assert_state_change.sol#20)\nConsider using require() or change the invariant to not modify the state.\n",
"markdown": "[A.bad2()](tests/detectors/assert-state-change/0.5.16/assert_state_change.sol#L19-L21) has an assert() call which possibly changes state.\n\t-[assert(bool)(bad2_callee())](tests/detectors/assert-state-change/0.5.16/assert_state_change.sol#L20)\nConsider using require() or change the invariant to not modify the state.\n",
"first_markdown_element": "tests/detectors/assert-state-change/0.5.16/assert_state_change.sol#L19-L21",
"id": "feb1fef411c094fe2d2dac33e4932217dd550b8a89548417ef8a4da2fe99eea2",
"check": "assert-state-change",
"impact": "Informational",

@ -183,6 +183,7 @@
],
"description": "A.bad0() (tests/detectors/assert-state-change/0.6.11/assert_state_change.sol#6-8) has an assert() call which possibly changes state.\n\t-assert(bool)((s_a += 1) > 10) (tests/detectors/assert-state-change/0.6.11/assert_state_change.sol#7)\nConsider using require() or change the invariant to not modify the state.\n",
"markdown": "[A.bad0()](tests/detectors/assert-state-change/0.6.11/assert_state_change.sol#L6-L8) has an assert() call which possibly changes state.\n\t-[assert(bool)((s_a += 1) > 10)](tests/detectors/assert-state-change/0.6.11/assert_state_change.sol#L7)\nConsider using require() or change the invariant to not modify the state.\n",
"first_markdown_element": "tests/detectors/assert-state-change/0.6.11/assert_state_change.sol#L6-L8",
"id": "5b8574d24925d841b9f041ba70166cc219ea6bcdd06c27d2f570740722b38380",
"check": "assert-state-change",
"impact": "Informational",
@ -371,6 +372,7 @@
],
"description": "A.bad1(uint256) (tests/detectors/assert-state-change/0.6.11/assert_state_change.sol#11-13) has an assert() call which possibly changes state.\n\t-assert(bool)((s_a += a) > 10) (tests/detectors/assert-state-change/0.6.11/assert_state_change.sol#12)\nConsider using require() or change the invariant to not modify the state.\n",
"markdown": "[A.bad1(uint256)](tests/detectors/assert-state-change/0.6.11/assert_state_change.sol#L11-L13) has an assert() call which possibly changes state.\n\t-[assert(bool)((s_a += a) > 10)](tests/detectors/assert-state-change/0.6.11/assert_state_change.sol#L12)\nConsider using require() or change the invariant to not modify the state.\n",
"first_markdown_element": "tests/detectors/assert-state-change/0.6.11/assert_state_change.sol#L11-L13",
"id": "c27ede68d9d7c6159032f3aef6bf9fa491390317da33307fa783a93c1b675bd7",
"check": "assert-state-change",
"impact": "Informational",
@ -559,6 +561,7 @@
],
"description": "A.bad2() (tests/detectors/assert-state-change/0.6.11/assert_state_change.sol#19-21) has an assert() call which possibly changes state.\n\t-assert(bool)(bad2_callee()) (tests/detectors/assert-state-change/0.6.11/assert_state_change.sol#20)\nConsider using require() or change the invariant to not modify the state.\n",
"markdown": "[A.bad2()](tests/detectors/assert-state-change/0.6.11/assert_state_change.sol#L19-L21) has an assert() call which possibly changes state.\n\t-[assert(bool)(bad2_callee())](tests/detectors/assert-state-change/0.6.11/assert_state_change.sol#L20)\nConsider using require() or change the invariant to not modify the state.\n",
"first_markdown_element": "tests/detectors/assert-state-change/0.6.11/assert_state_change.sol#L19-L21",
"id": "6f4b2360043bf3035cc152b583d3462d8cc98e91de8577091fe3a0af569d5285",
"check": "assert-state-change",
"impact": "Informational",

@ -183,6 +183,7 @@
],
"description": "A.bad0() (tests/detectors/assert-state-change/0.7.6/assert_state_change.sol#6-8) has an assert() call which possibly changes state.\n\t-assert(bool)((s_a += 1) > 10) (tests/detectors/assert-state-change/0.7.6/assert_state_change.sol#7)\nConsider using require() or change the invariant to not modify the state.\n",
"markdown": "[A.bad0()](tests/detectors/assert-state-change/0.7.6/assert_state_change.sol#L6-L8) has an assert() call which possibly changes state.\n\t-[assert(bool)((s_a += 1) > 10)](tests/detectors/assert-state-change/0.7.6/assert_state_change.sol#L7)\nConsider using require() or change the invariant to not modify the state.\n",
"first_markdown_element": "tests/detectors/assert-state-change/0.7.6/assert_state_change.sol#L6-L8",
"id": "a710d11e5510f0eb3acb2c1ec524779253f25bf2931bce4cb9c5c048ec586b80",
"check": "assert-state-change",
"impact": "Informational",
@ -371,6 +372,7 @@
],
"description": "A.bad1(uint256) (tests/detectors/assert-state-change/0.7.6/assert_state_change.sol#11-13) has an assert() call which possibly changes state.\n\t-assert(bool)((s_a += a) > 10) (tests/detectors/assert-state-change/0.7.6/assert_state_change.sol#12)\nConsider using require() or change the invariant to not modify the state.\n",
"markdown": "[A.bad1(uint256)](tests/detectors/assert-state-change/0.7.6/assert_state_change.sol#L11-L13) has an assert() call which possibly changes state.\n\t-[assert(bool)((s_a += a) > 10)](tests/detectors/assert-state-change/0.7.6/assert_state_change.sol#L12)\nConsider using require() or change the invariant to not modify the state.\n",
"first_markdown_element": "tests/detectors/assert-state-change/0.7.6/assert_state_change.sol#L11-L13",
"id": "60ad080e2f9647b400851918171383a9aac2900cc0828121e441db4240911fba",
"check": "assert-state-change",
"impact": "Informational",
@ -559,6 +561,7 @@
],
"description": "A.bad2() (tests/detectors/assert-state-change/0.7.6/assert_state_change.sol#19-21) has an assert() call which possibly changes state.\n\t-assert(bool)(bad2_callee()) (tests/detectors/assert-state-change/0.7.6/assert_state_change.sol#20)\nConsider using require() or change the invariant to not modify the state.\n",
"markdown": "[A.bad2()](tests/detectors/assert-state-change/0.7.6/assert_state_change.sol#L19-L21) has an assert() call which possibly changes state.\n\t-[assert(bool)(bad2_callee())](tests/detectors/assert-state-change/0.7.6/assert_state_change.sol#L20)\nConsider using require() or change the invariant to not modify the state.\n",
"first_markdown_element": "tests/detectors/assert-state-change/0.7.6/assert_state_change.sol#L19-L21",
"id": "4b31923b05dec7d68f1bf133b986b4ec06fcc82ff3b8f0414d3ee3d623b69265",
"check": "assert-state-change",
"impact": "Informational",

@ -52,6 +52,7 @@
],
"description": "Backdoor function found in C.i_am_a_backdoor() (tests/detectors/backdoor/0.4.25/backdoor.sol#4-6)\n",
"markdown": "Backdoor function found in [C.i_am_a_backdoor()](tests/detectors/backdoor/0.4.25/backdoor.sol#L4-L6)\n",
"first_markdown_element": "tests/detectors/backdoor/0.4.25/backdoor.sol#L4-L6",
"id": "8a9008f2f5cd23b34feb0235dcc30ecb8d09a10eff151b522939caead117ef7a",
"check": "backdoor",
"impact": "High",

@ -52,6 +52,7 @@
],
"description": "Backdoor function found in C.i_am_a_backdoor() (tests/detectors/backdoor/0.5.16/backdoor.sol#4-6)\n",
"markdown": "Backdoor function found in [C.i_am_a_backdoor()](tests/detectors/backdoor/0.5.16/backdoor.sol#L4-L6)\n",
"first_markdown_element": "tests/detectors/backdoor/0.5.16/backdoor.sol#L4-L6",
"id": "8a9008f2f5cd23b34feb0235dcc30ecb8d09a10eff151b522939caead117ef7a",
"check": "backdoor",
"impact": "High",

@ -52,6 +52,7 @@
],
"description": "Backdoor function found in C.i_am_a_backdoor() (tests/detectors/backdoor/0.6.11/backdoor.sol#4-6)\n",
"markdown": "Backdoor function found in [C.i_am_a_backdoor()](tests/detectors/backdoor/0.6.11/backdoor.sol#L4-L6)\n",
"first_markdown_element": "tests/detectors/backdoor/0.6.11/backdoor.sol#L4-L6",
"id": "8a9008f2f5cd23b34feb0235dcc30ecb8d09a10eff151b522939caead117ef7a",
"check": "backdoor",
"impact": "High",

@ -52,6 +52,7 @@
],
"description": "Backdoor function found in C.i_am_a_backdoor() (tests/detectors/backdoor/0.7.6/backdoor.sol#4-6)\n",
"markdown": "Backdoor function found in [C.i_am_a_backdoor()](tests/detectors/backdoor/0.7.6/backdoor.sol#L4-L6)\n",
"first_markdown_element": "tests/detectors/backdoor/0.7.6/backdoor.sol#L4-L6",
"id": "8a9008f2f5cd23b34feb0235dcc30ecb8d09a10eff151b522939caead117ef7a",
"check": "backdoor",
"impact": "High",

@ -199,6 +199,7 @@
],
"description": "MyConc.bad1(bool) (tests/detectors/boolean-cst/0.4.25/boolean-constant-misuse.sol#9-11) uses a Boolean constant improperly:\n\t-(b || true) (tests/detectors/boolean-cst/0.4.25/boolean-constant-misuse.sol#10)\n",
"markdown": "[MyConc.bad1(bool)](tests/detectors/boolean-cst/0.4.25/boolean-constant-misuse.sol#L9-L11) uses a Boolean constant improperly:\n\t-[(b || true)](tests/detectors/boolean-cst/0.4.25/boolean-constant-misuse.sol#L10)\n",
"first_markdown_element": "tests/detectors/boolean-cst/0.4.25/boolean-constant-misuse.sol#L9-L11",
"id": "4b8abd9aa6870f3044de67a84b3139e4a79c9ac13b4c0ed4f0772713f12c709b",
"check": "boolean-cst",
"impact": "Medium",

@ -199,6 +199,7 @@
],
"description": "MyConc.bad1(bool) (tests/detectors/boolean-cst/0.5.16/boolean-constant-misuse.sol#9-11) uses a Boolean constant improperly:\n\t-(b || true) (tests/detectors/boolean-cst/0.5.16/boolean-constant-misuse.sol#10)\n",
"markdown": "[MyConc.bad1(bool)](tests/detectors/boolean-cst/0.5.16/boolean-constant-misuse.sol#L9-L11) uses a Boolean constant improperly:\n\t-[(b || true)](tests/detectors/boolean-cst/0.5.16/boolean-constant-misuse.sol#L10)\n",
"first_markdown_element": "tests/detectors/boolean-cst/0.5.16/boolean-constant-misuse.sol#L9-L11",
"id": "bd4514763d71bc7fcb2a681b1fe98928e9d1dd92882c5fe0480e52cba9130cfe",
"check": "boolean-cst",
"impact": "Medium",

@ -199,6 +199,7 @@
],
"description": "MyConc.bad1(bool) (tests/detectors/boolean-cst/0.6.11/boolean-constant-misuse.sol#9-11) uses a Boolean constant improperly:\n\t-(b || true) (tests/detectors/boolean-cst/0.6.11/boolean-constant-misuse.sol#10)\n",
"markdown": "[MyConc.bad1(bool)](tests/detectors/boolean-cst/0.6.11/boolean-constant-misuse.sol#L9-L11) uses a Boolean constant improperly:\n\t-[(b || true)](tests/detectors/boolean-cst/0.6.11/boolean-constant-misuse.sol#L10)\n",
"first_markdown_element": "tests/detectors/boolean-cst/0.6.11/boolean-constant-misuse.sol#L9-L11",
"id": "81067a443028f22790f44718bff947b7ec6de12b929bd89147d3b34044b3890d",
"check": "boolean-cst",
"impact": "Medium",

@ -199,6 +199,7 @@
],
"description": "MyConc.bad1(bool) (tests/detectors/boolean-cst/0.7.6/boolean-constant-misuse.sol#9-11) uses a Boolean constant improperly:\n\t-(b || true) (tests/detectors/boolean-cst/0.7.6/boolean-constant-misuse.sol#10)\n",
"markdown": "[MyConc.bad1(bool)](tests/detectors/boolean-cst/0.7.6/boolean-constant-misuse.sol#L9-L11) uses a Boolean constant improperly:\n\t-[(b || true)](tests/detectors/boolean-cst/0.7.6/boolean-constant-misuse.sol#L10)\n",
"first_markdown_element": "tests/detectors/boolean-cst/0.7.6/boolean-constant-misuse.sol#L9-L11",
"id": "d96572f8601700902d157c2b4ad0b66254eba7a6d9c83710f26ea8cbdf2085fa",
"check": "boolean-cst",
"impact": "Medium",

@ -161,6 +161,7 @@
],
"description": "MyConc.bad1(bool) (tests/detectors/boolean-equal/0.4.25/boolean-constant-equality.sol#7-9) compares to a boolean constant:\n\t-(b == true) (tests/detectors/boolean-equal/0.4.25/boolean-constant-equality.sol#8)\n",
"markdown": "[MyConc.bad1(bool)](tests/detectors/boolean-equal/0.4.25/boolean-constant-equality.sol#L7-L9) compares to a boolean constant:\n\t-[(b == true)](tests/detectors/boolean-equal/0.4.25/boolean-constant-equality.sol#L8)\n",
"first_markdown_element": "tests/detectors/boolean-equal/0.4.25/boolean-constant-equality.sol#L7-L9",
"id": "55ba7d7edfd3cc9012d1fbd9d2ba12a488d950a885c3664fe080b90288a2c715",
"check": "boolean-equal",
"impact": "Informational",

@ -161,6 +161,7 @@
],
"description": "MyConc.bad1(bool) (tests/detectors/boolean-equal/0.5.16/boolean-constant-equality.sol#7-9) compares to a boolean constant:\n\t-(b == true) (tests/detectors/boolean-equal/0.5.16/boolean-constant-equality.sol#8)\n",
"markdown": "[MyConc.bad1(bool)](tests/detectors/boolean-equal/0.5.16/boolean-constant-equality.sol#L7-L9) compares to a boolean constant:\n\t-[(b == true)](tests/detectors/boolean-equal/0.5.16/boolean-constant-equality.sol#L8)\n",
"first_markdown_element": "tests/detectors/boolean-equal/0.5.16/boolean-constant-equality.sol#L7-L9",
"id": "be01fe651d102dc47ca3eb623ba9078138896f662948665b8d4e03780305c085",
"check": "boolean-equal",
"impact": "Informational",

@ -161,6 +161,7 @@
],
"description": "MyConc.bad1(bool) (tests/detectors/boolean-equal/0.6.11/boolean-constant-equality.sol#7-9) compares to a boolean constant:\n\t-(b == true) (tests/detectors/boolean-equal/0.6.11/boolean-constant-equality.sol#8)\n",
"markdown": "[MyConc.bad1(bool)](tests/detectors/boolean-equal/0.6.11/boolean-constant-equality.sol#L7-L9) compares to a boolean constant:\n\t-[(b == true)](tests/detectors/boolean-equal/0.6.11/boolean-constant-equality.sol#L8)\n",
"first_markdown_element": "tests/detectors/boolean-equal/0.6.11/boolean-constant-equality.sol#L7-L9",
"id": "0f863694c7b456673256b0f8002c9ac9f050b89b9ec3c86936c6399b3eb4b2e1",
"check": "boolean-equal",
"impact": "Informational",

@ -161,6 +161,7 @@
],
"description": "MyConc.bad1(bool) (tests/detectors/boolean-equal/0.7.6/boolean-constant-equality.sol#7-9) compares to a boolean constant:\n\t-(b == true) (tests/detectors/boolean-equal/0.7.6/boolean-constant-equality.sol#8)\n",
"markdown": "[MyConc.bad1(bool)](tests/detectors/boolean-equal/0.7.6/boolean-constant-equality.sol#L7-L9) compares to a boolean constant:\n\t-[(b == true)](tests/detectors/boolean-equal/0.7.6/boolean-constant-equality.sol#L8)\n",
"first_markdown_element": "tests/detectors/boolean-equal/0.7.6/boolean-constant-equality.sol#L7-L9",
"id": "7c89c8f828e73eb875b8f06bb1404ed2271cc5806f167d621604c23f62705f60",
"check": "boolean-equal",
"impact": "Informational",

@ -139,6 +139,7 @@
],
"description": "CallInLoop.bad() (tests/detectors/calls-loop/0.4.25/multiple_calls_in_loop.sol#9-13) has external calls inside a loop: destinations[i].transfer(i) (tests/detectors/calls-loop/0.4.25/multiple_calls_in_loop.sol#11)\n",
"markdown": "[CallInLoop.bad()](tests/detectors/calls-loop/0.4.25/multiple_calls_in_loop.sol#L9-L13) has external calls inside a loop: [destinations[i].transfer(i)](tests/detectors/calls-loop/0.4.25/multiple_calls_in_loop.sol#L11)\n",
"first_markdown_element": "tests/detectors/calls-loop/0.4.25/multiple_calls_in_loop.sol#L9-L13",
"id": "997dd7de40b82c6ac8e98324329bd99f827ed067c22d5b508b2e56c87ad49c0a",
"check": "calls-loop",
"impact": "Low",

@ -139,6 +139,7 @@
],
"description": "CallInLoop.bad() (tests/detectors/calls-loop/0.5.16/multiple_calls_in_loop.sol#9-13) has external calls inside a loop: address(uint160(destinations[i])).transfer(i) (tests/detectors/calls-loop/0.5.16/multiple_calls_in_loop.sol#11)\n",
"markdown": "[CallInLoop.bad()](tests/detectors/calls-loop/0.5.16/multiple_calls_in_loop.sol#L9-L13) has external calls inside a loop: [address(uint160(destinations[i])).transfer(i)](tests/detectors/calls-loop/0.5.16/multiple_calls_in_loop.sol#L11)\n",
"first_markdown_element": "tests/detectors/calls-loop/0.5.16/multiple_calls_in_loop.sol#L9-L13",
"id": "47b82a76ee810d93f014f425eefea8adbb806036dfee401a9883b1aa3ca85c44",
"check": "calls-loop",
"impact": "Low",

@ -139,6 +139,7 @@
],
"description": "CallInLoop.bad() (tests/detectors/calls-loop/0.6.11/multiple_calls_in_loop.sol#9-13) has external calls inside a loop: address(uint160(destinations[i])).transfer(i) (tests/detectors/calls-loop/0.6.11/multiple_calls_in_loop.sol#11)\n",
"markdown": "[CallInLoop.bad()](tests/detectors/calls-loop/0.6.11/multiple_calls_in_loop.sol#L9-L13) has external calls inside a loop: [address(uint160(destinations[i])).transfer(i)](tests/detectors/calls-loop/0.6.11/multiple_calls_in_loop.sol#L11)\n",
"first_markdown_element": "tests/detectors/calls-loop/0.6.11/multiple_calls_in_loop.sol#L9-L13",
"id": "f7fa2b373fe4eb9207d3ed267d99d7ca34ec7d786898816bc113c3e20079a411",
"check": "calls-loop",
"impact": "Low",

@ -139,6 +139,7 @@
],
"description": "CallInLoop.bad() (tests/detectors/calls-loop/0.7.6/multiple_calls_in_loop.sol#9-13) has external calls inside a loop: address(uint160(destinations[i])).transfer(i) (tests/detectors/calls-loop/0.7.6/multiple_calls_in_loop.sol#11)\n",
"markdown": "[CallInLoop.bad()](tests/detectors/calls-loop/0.7.6/multiple_calls_in_loop.sol#L9-L13) has external calls inside a loop: [address(uint160(destinations[i])).transfer(i)](tests/detectors/calls-loop/0.7.6/multiple_calls_in_loop.sol#L11)\n",
"first_markdown_element": "tests/detectors/calls-loop/0.7.6/multiple_calls_in_loop.sol#L9-L13",
"id": "c06ed4f7f79cddc5fbc2f828500766cab0a6d18b262a0f8e9c227cef7e6607df",
"check": "calls-loop",
"impact": "Low",

@ -60,6 +60,7 @@
],
"description": "A.myFriendsAddress (tests/detectors/constable-states/0.4.25/const_state_variables.sol#7) should be constant\n",
"markdown": "[A.myFriendsAddress](tests/detectors/constable-states/0.4.25/const_state_variables.sol#L7) should be constant\n",
"first_markdown_element": "tests/detectors/constable-states/0.4.25/const_state_variables.sol#L7",
"id": "1454db80653b732bf6acbe54ff0ae4707002207a2a8216708c12d61c88a43e5f",
"check": "constable-states",
"impact": "Optimization",
@ -125,6 +126,7 @@
],
"description": "A.test (tests/detectors/constable-states/0.4.25/const_state_variables.sol#10) should be constant\n",
"markdown": "[A.test](tests/detectors/constable-states/0.4.25/const_state_variables.sol#L10) should be constant\n",
"first_markdown_element": "tests/detectors/constable-states/0.4.25/const_state_variables.sol#L10",
"id": "5d9e3fb413322b71a93e90f7e89bd8c83cd4884d577d039598c681fe9db38b1d",
"check": "constable-states",
"impact": "Optimization",
@ -190,6 +192,7 @@
],
"description": "A.text2 (tests/detectors/constable-states/0.4.25/const_state_variables.sol#14) should be constant\n",
"markdown": "[A.text2](tests/detectors/constable-states/0.4.25/const_state_variables.sol#L14) should be constant\n",
"first_markdown_element": "tests/detectors/constable-states/0.4.25/const_state_variables.sol#L14",
"id": "df11e6201c4558a8c5cd90b55b134b9ca8f07203b2264d3aa93bd7745e8cb4ba",
"check": "constable-states",
"impact": "Optimization",
@ -251,6 +254,7 @@
],
"description": "B.mySistersAddress (tests/detectors/constable-states/0.4.25/const_state_variables.sol#26) should be constant\n",
"markdown": "[B.mySistersAddress](tests/detectors/constable-states/0.4.25/const_state_variables.sol#L26) should be constant\n",
"first_markdown_element": "tests/detectors/constable-states/0.4.25/const_state_variables.sol#L26",
"id": "bee93a722c8eae4a48aade67d8ef537d84c106f48fc9eb738c795fce10d3bc63",
"check": "constable-states",
"impact": "Optimization",
@ -312,6 +316,7 @@
],
"description": "MyConc.should_be_constant (tests/detectors/constable-states/0.4.25/const_state_variables.sol#42) should be constant\n",
"markdown": "[MyConc.should_be_constant](tests/detectors/constable-states/0.4.25/const_state_variables.sol#L42) should be constant\n",
"first_markdown_element": "tests/detectors/constable-states/0.4.25/const_state_variables.sol#L42",
"id": "cbcafa2a3efba4d21ac1b51b4b823e5082d556bc3d6cf3fd2ab3188f9f218fc1",
"check": "constable-states",
"impact": "Optimization",
@ -373,6 +378,7 @@
],
"description": "MyConc.should_be_constant_2 (tests/detectors/constable-states/0.4.25/const_state_variables.sol#43) should be constant\n",
"markdown": "[MyConc.should_be_constant_2](tests/detectors/constable-states/0.4.25/const_state_variables.sol#L43) should be constant\n",
"first_markdown_element": "tests/detectors/constable-states/0.4.25/const_state_variables.sol#L43",
"id": "9a48a4122de1a6a4774a9f1e0d4917bd0fa08f17b4af41b86ba07689e51bf711",
"check": "constable-states",
"impact": "Optimization",

@ -60,6 +60,7 @@
],
"description": "A.myFriendsAddress (tests/detectors/constable-states/0.5.16/const_state_variables.sol#7) should be constant\n",
"markdown": "[A.myFriendsAddress](tests/detectors/constable-states/0.5.16/const_state_variables.sol#L7) should be constant\n",
"first_markdown_element": "tests/detectors/constable-states/0.5.16/const_state_variables.sol#L7",
"id": "1454db80653b732bf6acbe54ff0ae4707002207a2a8216708c12d61c88a43e5f",
"check": "constable-states",
"impact": "Optimization",
@ -125,6 +126,7 @@
],
"description": "A.test (tests/detectors/constable-states/0.5.16/const_state_variables.sol#10) should be constant\n",
"markdown": "[A.test](tests/detectors/constable-states/0.5.16/const_state_variables.sol#L10) should be constant\n",
"first_markdown_element": "tests/detectors/constable-states/0.5.16/const_state_variables.sol#L10",
"id": "5d9e3fb413322b71a93e90f7e89bd8c83cd4884d577d039598c681fe9db38b1d",
"check": "constable-states",
"impact": "Optimization",
@ -190,6 +192,7 @@
],
"description": "A.text2 (tests/detectors/constable-states/0.5.16/const_state_variables.sol#14) should be constant\n",
"markdown": "[A.text2](tests/detectors/constable-states/0.5.16/const_state_variables.sol#L14) should be constant\n",
"first_markdown_element": "tests/detectors/constable-states/0.5.16/const_state_variables.sol#L14",
"id": "df11e6201c4558a8c5cd90b55b134b9ca8f07203b2264d3aa93bd7745e8cb4ba",
"check": "constable-states",
"impact": "Optimization",
@ -251,6 +254,7 @@
],
"description": "B.mySistersAddress (tests/detectors/constable-states/0.5.16/const_state_variables.sol#26) should be constant\n",
"markdown": "[B.mySistersAddress](tests/detectors/constable-states/0.5.16/const_state_variables.sol#L26) should be constant\n",
"first_markdown_element": "tests/detectors/constable-states/0.5.16/const_state_variables.sol#L26",
"id": "bee93a722c8eae4a48aade67d8ef537d84c106f48fc9eb738c795fce10d3bc63",
"check": "constable-states",
"impact": "Optimization",
@ -312,6 +316,7 @@
],
"description": "MyConc.should_be_constant (tests/detectors/constable-states/0.5.16/const_state_variables.sol#42) should be constant\n",
"markdown": "[MyConc.should_be_constant](tests/detectors/constable-states/0.5.16/const_state_variables.sol#L42) should be constant\n",
"first_markdown_element": "tests/detectors/constable-states/0.5.16/const_state_variables.sol#L42",
"id": "cbcafa2a3efba4d21ac1b51b4b823e5082d556bc3d6cf3fd2ab3188f9f218fc1",
"check": "constable-states",
"impact": "Optimization",
@ -373,6 +378,7 @@
],
"description": "MyConc.should_be_constant_2 (tests/detectors/constable-states/0.5.16/const_state_variables.sol#43) should be constant\n",
"markdown": "[MyConc.should_be_constant_2](tests/detectors/constable-states/0.5.16/const_state_variables.sol#L43) should be constant\n",
"first_markdown_element": "tests/detectors/constable-states/0.5.16/const_state_variables.sol#L43",
"id": "9a48a4122de1a6a4774a9f1e0d4917bd0fa08f17b4af41b86ba07689e51bf711",
"check": "constable-states",
"impact": "Optimization",

@ -60,6 +60,7 @@
],
"description": "A.myFriendsAddress (tests/detectors/constable-states/0.6.11/const_state_variables.sol#7) should be constant\n",
"markdown": "[A.myFriendsAddress](tests/detectors/constable-states/0.6.11/const_state_variables.sol#L7) should be constant\n",
"first_markdown_element": "tests/detectors/constable-states/0.6.11/const_state_variables.sol#L7",
"id": "1454db80653b732bf6acbe54ff0ae4707002207a2a8216708c12d61c88a43e5f",
"check": "constable-states",
"impact": "Optimization",
@ -125,6 +126,7 @@
],
"description": "A.test (tests/detectors/constable-states/0.6.11/const_state_variables.sol#10) should be constant\n",
"markdown": "[A.test](tests/detectors/constable-states/0.6.11/const_state_variables.sol#L10) should be constant\n",
"first_markdown_element": "tests/detectors/constable-states/0.6.11/const_state_variables.sol#L10",
"id": "5d9e3fb413322b71a93e90f7e89bd8c83cd4884d577d039598c681fe9db38b1d",
"check": "constable-states",
"impact": "Optimization",
@ -190,6 +192,7 @@
],
"description": "A.text2 (tests/detectors/constable-states/0.6.11/const_state_variables.sol#14) should be constant\n",
"markdown": "[A.text2](tests/detectors/constable-states/0.6.11/const_state_variables.sol#L14) should be constant\n",
"first_markdown_element": "tests/detectors/constable-states/0.6.11/const_state_variables.sol#L14",
"id": "df11e6201c4558a8c5cd90b55b134b9ca8f07203b2264d3aa93bd7745e8cb4ba",
"check": "constable-states",
"impact": "Optimization",
@ -251,6 +254,7 @@
],
"description": "B.mySistersAddress (tests/detectors/constable-states/0.6.11/const_state_variables.sol#26) should be constant\n",
"markdown": "[B.mySistersAddress](tests/detectors/constable-states/0.6.11/const_state_variables.sol#L26) should be constant\n",
"first_markdown_element": "tests/detectors/constable-states/0.6.11/const_state_variables.sol#L26",
"id": "bee93a722c8eae4a48aade67d8ef537d84c106f48fc9eb738c795fce10d3bc63",
"check": "constable-states",
"impact": "Optimization",
@ -312,6 +316,7 @@
],
"description": "MyConc.should_be_constant (tests/detectors/constable-states/0.6.11/const_state_variables.sol#42) should be constant\n",
"markdown": "[MyConc.should_be_constant](tests/detectors/constable-states/0.6.11/const_state_variables.sol#L42) should be constant\n",
"first_markdown_element": "tests/detectors/constable-states/0.6.11/const_state_variables.sol#L42",
"id": "cbcafa2a3efba4d21ac1b51b4b823e5082d556bc3d6cf3fd2ab3188f9f218fc1",
"check": "constable-states",
"impact": "Optimization",
@ -373,6 +378,7 @@
],
"description": "MyConc.should_be_constant_2 (tests/detectors/constable-states/0.6.11/const_state_variables.sol#43) should be constant\n",
"markdown": "[MyConc.should_be_constant_2](tests/detectors/constable-states/0.6.11/const_state_variables.sol#L43) should be constant\n",
"first_markdown_element": "tests/detectors/constable-states/0.6.11/const_state_variables.sol#L43",
"id": "9a48a4122de1a6a4774a9f1e0d4917bd0fa08f17b4af41b86ba07689e51bf711",
"check": "constable-states",
"impact": "Optimization",

@ -60,6 +60,7 @@
],
"description": "A.myFriendsAddress (tests/detectors/constable-states/0.7.6/const_state_variables.sol#7) should be constant\n",
"markdown": "[A.myFriendsAddress](tests/detectors/constable-states/0.7.6/const_state_variables.sol#L7) should be constant\n",
"first_markdown_element": "tests/detectors/constable-states/0.7.6/const_state_variables.sol#L7",
"id": "1454db80653b732bf6acbe54ff0ae4707002207a2a8216708c12d61c88a43e5f",
"check": "constable-states",
"impact": "Optimization",
@ -125,6 +126,7 @@
],
"description": "A.test (tests/detectors/constable-states/0.7.6/const_state_variables.sol#10) should be constant\n",
"markdown": "[A.test](tests/detectors/constable-states/0.7.6/const_state_variables.sol#L10) should be constant\n",
"first_markdown_element": "tests/detectors/constable-states/0.7.6/const_state_variables.sol#L10",
"id": "5d9e3fb413322b71a93e90f7e89bd8c83cd4884d577d039598c681fe9db38b1d",
"check": "constable-states",
"impact": "Optimization",
@ -190,6 +192,7 @@
],
"description": "A.text2 (tests/detectors/constable-states/0.7.6/const_state_variables.sol#14) should be constant\n",
"markdown": "[A.text2](tests/detectors/constable-states/0.7.6/const_state_variables.sol#L14) should be constant\n",
"first_markdown_element": "tests/detectors/constable-states/0.7.6/const_state_variables.sol#L14",
"id": "df11e6201c4558a8c5cd90b55b134b9ca8f07203b2264d3aa93bd7745e8cb4ba",
"check": "constable-states",
"impact": "Optimization",
@ -251,6 +254,7 @@
],
"description": "B.mySistersAddress (tests/detectors/constable-states/0.7.6/const_state_variables.sol#26) should be constant\n",
"markdown": "[B.mySistersAddress](tests/detectors/constable-states/0.7.6/const_state_variables.sol#L26) should be constant\n",
"first_markdown_element": "tests/detectors/constable-states/0.7.6/const_state_variables.sol#L26",
"id": "bee93a722c8eae4a48aade67d8ef537d84c106f48fc9eb738c795fce10d3bc63",
"check": "constable-states",
"impact": "Optimization",
@ -312,6 +316,7 @@
],
"description": "MyConc.should_be_constant (tests/detectors/constable-states/0.7.6/const_state_variables.sol#42) should be constant\n",
"markdown": "[MyConc.should_be_constant](tests/detectors/constable-states/0.7.6/const_state_variables.sol#L42) should be constant\n",
"first_markdown_element": "tests/detectors/constable-states/0.7.6/const_state_variables.sol#L42",
"id": "cbcafa2a3efba4d21ac1b51b4b823e5082d556bc3d6cf3fd2ab3188f9f218fc1",
"check": "constable-states",
"impact": "Optimization",
@ -373,6 +378,7 @@
],
"description": "MyConc.should_be_constant_2 (tests/detectors/constable-states/0.7.6/const_state_variables.sol#43) should be constant\n",
"markdown": "[MyConc.should_be_constant_2](tests/detectors/constable-states/0.7.6/const_state_variables.sol#L43) should be constant\n",
"first_markdown_element": "tests/detectors/constable-states/0.7.6/const_state_variables.sol#L43",
"id": "9a48a4122de1a6a4774a9f1e0d4917bd0fa08f17b4af41b86ba07689e51bf711",
"check": "constable-states",
"impact": "Optimization",

@ -70,6 +70,7 @@
],
"description": "Constant.test_assembly_bug() (tests/detectors/constant-function-asm/0.4.25/constant.sol#22-24) is declared view but contains assembly code\n",
"markdown": "[Constant.test_assembly_bug()](tests/detectors/constant-function-asm/0.4.25/constant.sol#L22-L24) is declared view but contains assembly code\n",
"first_markdown_element": "tests/detectors/constant-function-asm/0.4.25/constant.sol#L22-L24",
"id": "1f892cae08b89096bdc4d6ecdf55a3adc4b4314390e054fe2547d9c8e9f76e23",
"additional_fields": {
"contains_assembly": true

@ -132,6 +132,7 @@
],
"description": "Constant.test_view_bug() (tests/detectors/constant-function-state/0.4.25/constant.sol#5-7) is declared view but changes state variables:\n\t- Constant.a (tests/detectors/constant-function-state/0.4.25/constant.sol#3)\n",
"markdown": "[Constant.test_view_bug()](tests/detectors/constant-function-state/0.4.25/constant.sol#L5-L7) is declared view but changes state variables:\n\t- [Constant.a](tests/detectors/constant-function-state/0.4.25/constant.sol#L3)\n",
"first_markdown_element": "tests/detectors/constant-function-state/0.4.25/constant.sol#L5-L7",
"id": "4dee61d8835d20c6f1f7c195d8bd1e9de5dbcc096396a5b8db391136f9f5fdf1",
"additional_fields": {
"contains_assembly": false
@ -272,6 +273,7 @@
],
"description": "Constant.test_constant_bug() (tests/detectors/constant-function-state/0.4.25/constant.sol#9-11) is declared view but changes state variables:\n\t- Constant.a (tests/detectors/constant-function-state/0.4.25/constant.sol#3)\n",
"markdown": "[Constant.test_constant_bug()](tests/detectors/constant-function-state/0.4.25/constant.sol#L9-L11) is declared view but changes state variables:\n\t- [Constant.a](tests/detectors/constant-function-state/0.4.25/constant.sol#L3)\n",
"first_markdown_element": "tests/detectors/constant-function-state/0.4.25/constant.sol#L9-L11",
"id": "145e2d34dfc5b932c8d67d480c0eaec9baa8c728e2a310529572c0c4a5c6046a",
"additional_fields": {
"contains_assembly": false

@ -195,6 +195,7 @@
],
"description": "ArrayLengthAssignment (tests/detectors/controlled-array-length/0.4.25/array_length_assignment.sol#1-46) contract sets array length with a user-controlled value:\n\t- arr.length = param (tests/detectors/controlled-array-length/0.4.25/array_length_assignment.sol#26)\n",
"markdown": "[ArrayLengthAssignment](tests/detectors/controlled-array-length/0.4.25/array_length_assignment.sol#L1-L46) contract sets array length with a user-controlled value:\n\t- [arr.length = param](tests/detectors/controlled-array-length/0.4.25/array_length_assignment.sol#L26)\n",
"first_markdown_element": "tests/detectors/controlled-array-length/0.4.25/array_length_assignment.sol#L1-L46",
"id": "13e0633277a811f9416912f4404d805c1aaaaaacbc94989215c41de964718b0b",
"check": "controlled-array-length",
"impact": "High",
@ -395,6 +396,7 @@
],
"description": "ArrayLengthAssignment (tests/detectors/controlled-array-length/0.4.25/array_length_assignment.sol#1-46) contract sets array length with a user-controlled value:\n\t- a.x.length = param (tests/detectors/controlled-array-length/0.4.25/array_length_assignment.sol#36)\n",
"markdown": "[ArrayLengthAssignment](tests/detectors/controlled-array-length/0.4.25/array_length_assignment.sol#L1-L46) contract sets array length with a user-controlled value:\n\t- [a.x.length = param](tests/detectors/controlled-array-length/0.4.25/array_length_assignment.sol#L36)\n",
"first_markdown_element": "tests/detectors/controlled-array-length/0.4.25/array_length_assignment.sol#L1-L46",
"id": "f455c672028771f21282b59fb58b5eac51185eae4ac44e65a2e1f4df6db0c6e4",
"check": "controlled-array-length",
"impact": "High",
@ -595,6 +597,7 @@
],
"description": "ArrayLengthAssignment (tests/detectors/controlled-array-length/0.4.25/array_length_assignment.sol#1-46) contract sets array length with a user-controlled value:\n\t- b.subStruct.x.length = param + 1 (tests/detectors/controlled-array-length/0.4.25/array_length_assignment.sol#41)\n",
"markdown": "[ArrayLengthAssignment](tests/detectors/controlled-array-length/0.4.25/array_length_assignment.sol#L1-L46) contract sets array length with a user-controlled value:\n\t- [b.subStruct.x.length = param + 1](tests/detectors/controlled-array-length/0.4.25/array_length_assignment.sol#L41)\n",
"first_markdown_element": "tests/detectors/controlled-array-length/0.4.25/array_length_assignment.sol#L1-L46",
"id": "82175a5c24c40a1afe4c59f4271a2c12e577ad25e89e6e319e47b4f8f2a76943",
"check": "controlled-array-length",
"impact": "High",

@ -195,6 +195,7 @@
],
"description": "ArrayLengthAssignment (tests/detectors/controlled-array-length/0.5.16/array_length_assignment.sol#1-46) contract sets array length with a user-controlled value:\n\t- arr.length = param (tests/detectors/controlled-array-length/0.5.16/array_length_assignment.sol#26)\n",
"markdown": "[ArrayLengthAssignment](tests/detectors/controlled-array-length/0.5.16/array_length_assignment.sol#L1-L46) contract sets array length with a user-controlled value:\n\t- [arr.length = param](tests/detectors/controlled-array-length/0.5.16/array_length_assignment.sol#L26)\n",
"first_markdown_element": "tests/detectors/controlled-array-length/0.5.16/array_length_assignment.sol#L1-L46",
"id": "5120add82e5b674971638ddcd430301e4fd0ff0abc12b425d78bb09baa519dd0",
"check": "controlled-array-length",
"impact": "High",
@ -267,20 +268,20 @@
},
{
"type": "node",
"name": "b.subStruct.x.length = param + 1",
"name": "a.x.length = param",
"source_mapping": {
"start": 964,
"length": 32,
"start": 818,
"length": 18,
"filename_used": "/GENERIC_PATH",
"filename_relative": "tests/detectors/controlled-array-length/0.5.16/array_length_assignment.sol",
"filename_absolute": "/GENERIC_PATH",
"filename_short": "tests/detectors/controlled-array-length/0.5.16/array_length_assignment.sol",
"is_dependency": false,
"lines": [
41
36
],
"starting_column": 9,
"ending_column": 41
"ending_column": 27
},
"type_specific_fields": {
"parent": {
@ -393,9 +394,10 @@
}
}
],
"description": "ArrayLengthAssignment (tests/detectors/controlled-array-length/0.5.16/array_length_assignment.sol#1-46) contract sets array length with a user-controlled value:\n\t- b.subStruct.x.length = param + 1 (tests/detectors/controlled-array-length/0.5.16/array_length_assignment.sol#41)\n",
"markdown": "[ArrayLengthAssignment](tests/detectors/controlled-array-length/0.5.16/array_length_assignment.sol#L1-L46) contract sets array length with a user-controlled value:\n\t- [b.subStruct.x.length = param + 1](tests/detectors/controlled-array-length/0.5.16/array_length_assignment.sol#L41)\n",
"id": "ba005d0d2665bc40c7c33b2a6a32bf426b4a5ccea38e75a6265976a20c9b7ae3",
"description": "ArrayLengthAssignment (tests/detectors/controlled-array-length/0.5.16/array_length_assignment.sol#1-46) contract sets array length with a user-controlled value:\n\t- a.x.length = param (tests/detectors/controlled-array-length/0.5.16/array_length_assignment.sol#36)\n",
"markdown": "[ArrayLengthAssignment](tests/detectors/controlled-array-length/0.5.16/array_length_assignment.sol#L1-L46) contract sets array length with a user-controlled value:\n\t- [a.x.length = param](tests/detectors/controlled-array-length/0.5.16/array_length_assignment.sol#L36)\n",
"first_markdown_element": "tests/detectors/controlled-array-length/0.5.16/array_length_assignment.sol#L1-L46",
"id": "3ee7c4c1f07506f88bcd3b42a86641b32b24a3978768cbcb99301bd8a1fcb975",
"check": "controlled-array-length",
"impact": "High",
"confidence": "Medium"
@ -467,20 +469,20 @@
},
{
"type": "node",
"name": "a.x.length = param",
"name": "b.subStruct.x.length = param + 1",
"source_mapping": {
"start": 818,
"length": 18,
"start": 964,
"length": 32,
"filename_used": "/GENERIC_PATH",
"filename_relative": "tests/detectors/controlled-array-length/0.5.16/array_length_assignment.sol",
"filename_absolute": "/GENERIC_PATH",
"filename_short": "tests/detectors/controlled-array-length/0.5.16/array_length_assignment.sol",
"is_dependency": false,
"lines": [
36
41
],
"starting_column": 9,
"ending_column": 27
"ending_column": 41
},
"type_specific_fields": {
"parent": {
@ -593,9 +595,10 @@
}
}
],
"description": "ArrayLengthAssignment (tests/detectors/controlled-array-length/0.5.16/array_length_assignment.sol#1-46) contract sets array length with a user-controlled value:\n\t- a.x.length = param (tests/detectors/controlled-array-length/0.5.16/array_length_assignment.sol#36)\n",
"markdown": "[ArrayLengthAssignment](tests/detectors/controlled-array-length/0.5.16/array_length_assignment.sol#L1-L46) contract sets array length with a user-controlled value:\n\t- [a.x.length = param](tests/detectors/controlled-array-length/0.5.16/array_length_assignment.sol#L36)\n",
"id": "3ee7c4c1f07506f88bcd3b42a86641b32b24a3978768cbcb99301bd8a1fcb975",
"description": "ArrayLengthAssignment (tests/detectors/controlled-array-length/0.5.16/array_length_assignment.sol#1-46) contract sets array length with a user-controlled value:\n\t- b.subStruct.x.length = param + 1 (tests/detectors/controlled-array-length/0.5.16/array_length_assignment.sol#41)\n",
"markdown": "[ArrayLengthAssignment](tests/detectors/controlled-array-length/0.5.16/array_length_assignment.sol#L1-L46) contract sets array length with a user-controlled value:\n\t- [b.subStruct.x.length = param + 1](tests/detectors/controlled-array-length/0.5.16/array_length_assignment.sol#L41)\n",
"first_markdown_element": "tests/detectors/controlled-array-length/0.5.16/array_length_assignment.sol#L1-L46",
"id": "ba005d0d2665bc40c7c33b2a6a32bf426b4a5ccea38e75a6265976a20c9b7ae3",
"check": "controlled-array-length",
"impact": "High",
"confidence": "Medium"

@ -157,6 +157,7 @@
],
"description": "C.bad_delegate_call(bytes) (tests/detectors/controlled-delegatecall/0.4.25/controlled_delegatecall.sol#8-11) uses delegatecall to a input-controlled function id\n\t- addr_bad.delegatecall(data) (tests/detectors/controlled-delegatecall/0.4.25/controlled_delegatecall.sol#10)\n",
"markdown": "[C.bad_delegate_call(bytes)](tests/detectors/controlled-delegatecall/0.4.25/controlled_delegatecall.sol#L8-L11) uses delegatecall to a input-controlled function id\n\t- [addr_bad.delegatecall(data)](tests/detectors/controlled-delegatecall/0.4.25/controlled_delegatecall.sol#L10)\n",
"first_markdown_element": "tests/detectors/controlled-delegatecall/0.4.25/controlled_delegatecall.sol#L8-L11",
"id": "90d4f387ca3c669975a3ed4d7a5b09665b786a1078e16ced61adf1c3f9f6efb8",
"check": "controlled-delegatecall",
"impact": "High",
@ -317,6 +318,7 @@
],
"description": "C.bad_delegate_call2(bytes) (tests/detectors/controlled-delegatecall/0.4.25/controlled_delegatecall.sol#18-20) uses delegatecall to a input-controlled function id\n\t- addr_bad.delegatecall(abi.encode(func_id,data)) (tests/detectors/controlled-delegatecall/0.4.25/controlled_delegatecall.sol#19)\n",
"markdown": "[C.bad_delegate_call2(bytes)](tests/detectors/controlled-delegatecall/0.4.25/controlled_delegatecall.sol#L18-L20) uses delegatecall to a input-controlled function id\n\t- [addr_bad.delegatecall(abi.encode(func_id,data))](tests/detectors/controlled-delegatecall/0.4.25/controlled_delegatecall.sol#L19)\n",
"first_markdown_element": "tests/detectors/controlled-delegatecall/0.4.25/controlled_delegatecall.sol#L18-L20",
"id": "12d6ba2d0139326b442352b37028ff77dfbdc625870a5ae858e6107cfa89cfbb",
"check": "controlled-delegatecall",
"impact": "High",

@ -157,6 +157,7 @@
],
"description": "C.bad_delegate_call(bytes) (tests/detectors/controlled-delegatecall/0.5.16/controlled_delegatecall.sol#8-11) uses delegatecall to a input-controlled function id\n\t- addr_bad.delegatecall(data) (tests/detectors/controlled-delegatecall/0.5.16/controlled_delegatecall.sol#10)\n",
"markdown": "[C.bad_delegate_call(bytes)](tests/detectors/controlled-delegatecall/0.5.16/controlled_delegatecall.sol#L8-L11) uses delegatecall to a input-controlled function id\n\t- [addr_bad.delegatecall(data)](tests/detectors/controlled-delegatecall/0.5.16/controlled_delegatecall.sol#L10)\n",
"first_markdown_element": "tests/detectors/controlled-delegatecall/0.5.16/controlled_delegatecall.sol#L8-L11",
"id": "5ffc12fd6e122f0e70986a5d7f8d14c087f538145910100ea15192a63391a2b7",
"check": "controlled-delegatecall",
"impact": "High",
@ -317,6 +318,7 @@
],
"description": "C.bad_delegate_call2(bytes) (tests/detectors/controlled-delegatecall/0.5.16/controlled_delegatecall.sol#18-20) uses delegatecall to a input-controlled function id\n\t- addr_bad.delegatecall(abi.encode(func_id,data)) (tests/detectors/controlled-delegatecall/0.5.16/controlled_delegatecall.sol#19)\n",
"markdown": "[C.bad_delegate_call2(bytes)](tests/detectors/controlled-delegatecall/0.5.16/controlled_delegatecall.sol#L18-L20) uses delegatecall to a input-controlled function id\n\t- [addr_bad.delegatecall(abi.encode(func_id,data))](tests/detectors/controlled-delegatecall/0.5.16/controlled_delegatecall.sol#L19)\n",
"first_markdown_element": "tests/detectors/controlled-delegatecall/0.5.16/controlled_delegatecall.sol#L18-L20",
"id": "a8749733eb415695ac990f9045813c8c1aadfb54f6de912cff1927db64a6d8d6",
"check": "controlled-delegatecall",
"impact": "High",

@ -157,6 +157,7 @@
],
"description": "C.bad_delegate_call(bytes) (tests/detectors/controlled-delegatecall/0.6.11/controlled_delegatecall.sol#8-11) uses delegatecall to a input-controlled function id\n\t- addr_bad.delegatecall(data) (tests/detectors/controlled-delegatecall/0.6.11/controlled_delegatecall.sol#10)\n",
"markdown": "[C.bad_delegate_call(bytes)](tests/detectors/controlled-delegatecall/0.6.11/controlled_delegatecall.sol#L8-L11) uses delegatecall to a input-controlled function id\n\t- [addr_bad.delegatecall(data)](tests/detectors/controlled-delegatecall/0.6.11/controlled_delegatecall.sol#L10)\n",
"first_markdown_element": "tests/detectors/controlled-delegatecall/0.6.11/controlled_delegatecall.sol#L8-L11",
"id": "bed67f615a2f3a872e24eedf23fdedbdfbe5a540dc3f3ea4ca1430581997a8f6",
"check": "controlled-delegatecall",
"impact": "High",
@ -317,6 +318,7 @@
],
"description": "C.bad_delegate_call2(bytes) (tests/detectors/controlled-delegatecall/0.6.11/controlled_delegatecall.sol#18-20) uses delegatecall to a input-controlled function id\n\t- addr_bad.delegatecall(abi.encode(func_id,data)) (tests/detectors/controlled-delegatecall/0.6.11/controlled_delegatecall.sol#19)\n",
"markdown": "[C.bad_delegate_call2(bytes)](tests/detectors/controlled-delegatecall/0.6.11/controlled_delegatecall.sol#L18-L20) uses delegatecall to a input-controlled function id\n\t- [addr_bad.delegatecall(abi.encode(func_id,data))](tests/detectors/controlled-delegatecall/0.6.11/controlled_delegatecall.sol#L19)\n",
"first_markdown_element": "tests/detectors/controlled-delegatecall/0.6.11/controlled_delegatecall.sol#L18-L20",
"id": "82fc8a33f6b16eff457087ec9961f2bce3c61289628dac8284009c8275cea790",
"check": "controlled-delegatecall",
"impact": "High",

@ -157,6 +157,7 @@
],
"description": "C.bad_delegate_call(bytes) (tests/detectors/controlled-delegatecall/0.7.6/controlled_delegatecall.sol#8-11) uses delegatecall to a input-controlled function id\n\t- addr_bad.delegatecall(data) (tests/detectors/controlled-delegatecall/0.7.6/controlled_delegatecall.sol#10)\n",
"markdown": "[C.bad_delegate_call(bytes)](tests/detectors/controlled-delegatecall/0.7.6/controlled_delegatecall.sol#L8-L11) uses delegatecall to a input-controlled function id\n\t- [addr_bad.delegatecall(data)](tests/detectors/controlled-delegatecall/0.7.6/controlled_delegatecall.sol#L10)\n",
"first_markdown_element": "tests/detectors/controlled-delegatecall/0.7.6/controlled_delegatecall.sol#L8-L11",
"id": "59a70e53c14de214629ffde4abab9700cbb3bc66a99e281954e3b9f285a28c2d",
"check": "controlled-delegatecall",
"impact": "High",
@ -317,6 +318,7 @@
],
"description": "C.bad_delegate_call2(bytes) (tests/detectors/controlled-delegatecall/0.7.6/controlled_delegatecall.sol#18-20) uses delegatecall to a input-controlled function id\n\t- addr_bad.delegatecall(abi.encode(func_id,data)) (tests/detectors/controlled-delegatecall/0.7.6/controlled_delegatecall.sol#19)\n",
"markdown": "[C.bad_delegate_call2(bytes)](tests/detectors/controlled-delegatecall/0.7.6/controlled_delegatecall.sol#L18-L20) uses delegatecall to a input-controlled function id\n\t- [addr_bad.delegatecall(abi.encode(func_id,data))](tests/detectors/controlled-delegatecall/0.7.6/controlled_delegatecall.sol#L19)\n",
"first_markdown_element": "tests/detectors/controlled-delegatecall/0.7.6/controlled_delegatecall.sol#L18-L20",
"id": "04a4aed45b4c803d9fa03d70198a8f6d7f4228d2fd5e06bd61c4c68431be2c90",
"check": "controlled-delegatecall",
"impact": "High",

@ -175,6 +175,7 @@
],
"description": "CostlyOperationsInLoop.bad() (tests/detectors/costly-loop/0.4.25/multiple_costly_operations_in_loop.sol#10-14) has costly operations inside a loop:\n\t- state_variable ++ (tests/detectors/costly-loop/0.4.25/multiple_costly_operations_in_loop.sol#12)\n",
"markdown": "[CostlyOperationsInLoop.bad()](tests/detectors/costly-loop/0.4.25/multiple_costly_operations_in_loop.sol#L10-L14) has costly operations inside a loop:\n\t- [state_variable ++](tests/detectors/costly-loop/0.4.25/multiple_costly_operations_in_loop.sol#L12)\n",
"first_markdown_element": "tests/detectors/costly-loop/0.4.25/multiple_costly_operations_in_loop.sol#L10-L14",
"id": "d00641f4d08f61911f58d8c73e60ce3f655d045c8f6207b7fdf91a029fd14962",
"check": "costly-loop",
"impact": "Informational",

@ -175,6 +175,7 @@
],
"description": "CostlyOperationsInLoop.bad() (tests/detectors/costly-loop/0.5.16/multiple_costly_operations_in_loop.sol#10-14) has costly operations inside a loop:\n\t- state_variable ++ (tests/detectors/costly-loop/0.5.16/multiple_costly_operations_in_loop.sol#12)\n",
"markdown": "[CostlyOperationsInLoop.bad()](tests/detectors/costly-loop/0.5.16/multiple_costly_operations_in_loop.sol#L10-L14) has costly operations inside a loop:\n\t- [state_variable ++](tests/detectors/costly-loop/0.5.16/multiple_costly_operations_in_loop.sol#L12)\n",
"first_markdown_element": "tests/detectors/costly-loop/0.5.16/multiple_costly_operations_in_loop.sol#L10-L14",
"id": "1496f0664c18be47e9b27df825eb148e11f5458abbe2c0b8758c0645a220d802",
"check": "costly-loop",
"impact": "Informational",

@ -175,6 +175,7 @@
],
"description": "CostlyOperationsInLoop.bad() (tests/detectors/costly-loop/0.6.11/multiple_costly_operations_in_loop.sol#10-14) has costly operations inside a loop:\n\t- state_variable ++ (tests/detectors/costly-loop/0.6.11/multiple_costly_operations_in_loop.sol#12)\n",
"markdown": "[CostlyOperationsInLoop.bad()](tests/detectors/costly-loop/0.6.11/multiple_costly_operations_in_loop.sol#L10-L14) has costly operations inside a loop:\n\t- [state_variable ++](tests/detectors/costly-loop/0.6.11/multiple_costly_operations_in_loop.sol#L12)\n",
"first_markdown_element": "tests/detectors/costly-loop/0.6.11/multiple_costly_operations_in_loop.sol#L10-L14",
"id": "aad1cf92bc7ec06342b0fa39a1affa4e06b09bdb3b0c8fae61aeb4221236041a",
"check": "costly-loop",
"impact": "Informational",

@ -175,6 +175,7 @@
],
"description": "CostlyOperationsInLoop.bad() (tests/detectors/costly-loop/0.7.6/multiple_costly_operations_in_loop.sol#10-14) has costly operations inside a loop:\n\t- state_variable ++ (tests/detectors/costly-loop/0.7.6/multiple_costly_operations_in_loop.sol#12)\n",
"markdown": "[CostlyOperationsInLoop.bad()](tests/detectors/costly-loop/0.7.6/multiple_costly_operations_in_loop.sol#L10-L14) has costly operations inside a loop:\n\t- [state_variable ++](tests/detectors/costly-loop/0.7.6/multiple_costly_operations_in_loop.sol#L12)\n",
"first_markdown_element": "tests/detectors/costly-loop/0.7.6/multiple_costly_operations_in_loop.sol#L10-L14",
"id": "d6753ee3bfd5d2bb35baf5f9aa672d98eb00b2a771cbbfe37d5bac0d009f56ad",
"check": "costly-loop",
"impact": "Informational",

@ -56,6 +56,7 @@
],
"description": "ERC20 event IERC20BadTransfer(address,address,uint256) (tests/detectors/erc20-indexed/0.4.25/erc20_indexed.sol#19)does not index parameter from\n",
"markdown": "ERC20 event [IERC20BadTransfer(address,address,uint256)](tests/detectors/erc20-indexed/0.4.25/erc20_indexed.sol#L19)does not index parameter from\n",
"first_markdown_element": "tests/detectors/erc20-indexed/0.4.25/erc20_indexed.sol#L19",
"id": "a86c7a54115f270548e82d71570dc4d2900b622b0f82c6fce137f3a35314af53",
"check": "erc20-indexed",
"impact": "Informational",
@ -117,6 +118,7 @@
],
"description": "ERC20 event IERC20BadTransfer(address,address,uint256) (tests/detectors/erc20-indexed/0.4.25/erc20_indexed.sol#19)does not index parameter to\n",
"markdown": "ERC20 event [IERC20BadTransfer(address,address,uint256)](tests/detectors/erc20-indexed/0.4.25/erc20_indexed.sol#L19)does not index parameter to\n",
"first_markdown_element": "tests/detectors/erc20-indexed/0.4.25/erc20_indexed.sol#L19",
"id": "29c46eb3a4695004959847ae09377729cdf3aa583de95560090b9bd49977c49b",
"check": "erc20-indexed",
"impact": "Informational",
@ -178,6 +180,7 @@
],
"description": "ERC20 event IERC20BadApproval(address,address,uint256) (tests/detectors/erc20-indexed/0.4.25/erc20_indexed.sol#20)does not index parameter owner\n",
"markdown": "ERC20 event [IERC20BadApproval(address,address,uint256)](tests/detectors/erc20-indexed/0.4.25/erc20_indexed.sol#L20)does not index parameter owner\n",
"first_markdown_element": "tests/detectors/erc20-indexed/0.4.25/erc20_indexed.sol#L20",
"id": "7d72b56a71ca96db304878f25484c496af1d283a9b777dc788f1473974057025",
"check": "erc20-indexed",
"impact": "Informational",
@ -239,6 +242,7 @@
],
"description": "ERC20 event IERC20BadApproval(address,address,uint256) (tests/detectors/erc20-indexed/0.4.25/erc20_indexed.sol#20)does not index parameter spender\n",
"markdown": "ERC20 event [IERC20BadApproval(address,address,uint256)](tests/detectors/erc20-indexed/0.4.25/erc20_indexed.sol#L20)does not index parameter spender\n",
"first_markdown_element": "tests/detectors/erc20-indexed/0.4.25/erc20_indexed.sol#L20",
"id": "df4d927d202bdca1fc411d6960d3f62ed2784f5eca7435cb0503f4154f2e3bc6",
"check": "erc20-indexed",
"impact": "Informational",

@ -56,6 +56,7 @@
],
"description": "ERC20 event IERC20BadTransfer(address,address,uint256) (tests/detectors/erc20-indexed/0.5.16/erc20_indexed.sol#19)does not index parameter from\n",
"markdown": "ERC20 event [IERC20BadTransfer(address,address,uint256)](tests/detectors/erc20-indexed/0.5.16/erc20_indexed.sol#L19)does not index parameter from\n",
"first_markdown_element": "tests/detectors/erc20-indexed/0.5.16/erc20_indexed.sol#L19",
"id": "a86c7a54115f270548e82d71570dc4d2900b622b0f82c6fce137f3a35314af53",
"check": "erc20-indexed",
"impact": "Informational",
@ -117,6 +118,7 @@
],
"description": "ERC20 event IERC20BadTransfer(address,address,uint256) (tests/detectors/erc20-indexed/0.5.16/erc20_indexed.sol#19)does not index parameter to\n",
"markdown": "ERC20 event [IERC20BadTransfer(address,address,uint256)](tests/detectors/erc20-indexed/0.5.16/erc20_indexed.sol#L19)does not index parameter to\n",
"first_markdown_element": "tests/detectors/erc20-indexed/0.5.16/erc20_indexed.sol#L19",
"id": "29c46eb3a4695004959847ae09377729cdf3aa583de95560090b9bd49977c49b",
"check": "erc20-indexed",
"impact": "Informational",
@ -178,6 +180,7 @@
],
"description": "ERC20 event IERC20BadApproval(address,address,uint256) (tests/detectors/erc20-indexed/0.5.16/erc20_indexed.sol#20)does not index parameter owner\n",
"markdown": "ERC20 event [IERC20BadApproval(address,address,uint256)](tests/detectors/erc20-indexed/0.5.16/erc20_indexed.sol#L20)does not index parameter owner\n",
"first_markdown_element": "tests/detectors/erc20-indexed/0.5.16/erc20_indexed.sol#L20",
"id": "7d72b56a71ca96db304878f25484c496af1d283a9b777dc788f1473974057025",
"check": "erc20-indexed",
"impact": "Informational",
@ -239,6 +242,7 @@
],
"description": "ERC20 event IERC20BadApproval(address,address,uint256) (tests/detectors/erc20-indexed/0.5.16/erc20_indexed.sol#20)does not index parameter spender\n",
"markdown": "ERC20 event [IERC20BadApproval(address,address,uint256)](tests/detectors/erc20-indexed/0.5.16/erc20_indexed.sol#L20)does not index parameter spender\n",
"first_markdown_element": "tests/detectors/erc20-indexed/0.5.16/erc20_indexed.sol#L20",
"id": "df4d927d202bdca1fc411d6960d3f62ed2784f5eca7435cb0503f4154f2e3bc6",
"check": "erc20-indexed",
"impact": "Informational",

@ -56,6 +56,7 @@
],
"description": "ERC20 event IERC20BadTransfer(address,address,uint256) (tests/detectors/erc20-indexed/0.6.11/erc20_indexed.sol#19)does not index parameter from\n",
"markdown": "ERC20 event [IERC20BadTransfer(address,address,uint256)](tests/detectors/erc20-indexed/0.6.11/erc20_indexed.sol#L19)does not index parameter from\n",
"first_markdown_element": "tests/detectors/erc20-indexed/0.6.11/erc20_indexed.sol#L19",
"id": "a86c7a54115f270548e82d71570dc4d2900b622b0f82c6fce137f3a35314af53",
"check": "erc20-indexed",
"impact": "Informational",
@ -117,6 +118,7 @@
],
"description": "ERC20 event IERC20BadTransfer(address,address,uint256) (tests/detectors/erc20-indexed/0.6.11/erc20_indexed.sol#19)does not index parameter to\n",
"markdown": "ERC20 event [IERC20BadTransfer(address,address,uint256)](tests/detectors/erc20-indexed/0.6.11/erc20_indexed.sol#L19)does not index parameter to\n",
"first_markdown_element": "tests/detectors/erc20-indexed/0.6.11/erc20_indexed.sol#L19",
"id": "29c46eb3a4695004959847ae09377729cdf3aa583de95560090b9bd49977c49b",
"check": "erc20-indexed",
"impact": "Informational",
@ -178,6 +180,7 @@
],
"description": "ERC20 event IERC20BadApproval(address,address,uint256) (tests/detectors/erc20-indexed/0.6.11/erc20_indexed.sol#20)does not index parameter owner\n",
"markdown": "ERC20 event [IERC20BadApproval(address,address,uint256)](tests/detectors/erc20-indexed/0.6.11/erc20_indexed.sol#L20)does not index parameter owner\n",
"first_markdown_element": "tests/detectors/erc20-indexed/0.6.11/erc20_indexed.sol#L20",
"id": "7d72b56a71ca96db304878f25484c496af1d283a9b777dc788f1473974057025",
"check": "erc20-indexed",
"impact": "Informational",
@ -239,6 +242,7 @@
],
"description": "ERC20 event IERC20BadApproval(address,address,uint256) (tests/detectors/erc20-indexed/0.6.11/erc20_indexed.sol#20)does not index parameter spender\n",
"markdown": "ERC20 event [IERC20BadApproval(address,address,uint256)](tests/detectors/erc20-indexed/0.6.11/erc20_indexed.sol#L20)does not index parameter spender\n",
"first_markdown_element": "tests/detectors/erc20-indexed/0.6.11/erc20_indexed.sol#L20",
"id": "df4d927d202bdca1fc411d6960d3f62ed2784f5eca7435cb0503f4154f2e3bc6",
"check": "erc20-indexed",
"impact": "Informational",

@ -56,6 +56,7 @@
],
"description": "ERC20 event IERC20BadTransfer(address,address,uint256) (tests/detectors/erc20-indexed/0.7.6/erc20_indexed.sol#19)does not index parameter from\n",
"markdown": "ERC20 event [IERC20BadTransfer(address,address,uint256)](tests/detectors/erc20-indexed/0.7.6/erc20_indexed.sol#L19)does not index parameter from\n",
"first_markdown_element": "tests/detectors/erc20-indexed/0.7.6/erc20_indexed.sol#L19",
"id": "a86c7a54115f270548e82d71570dc4d2900b622b0f82c6fce137f3a35314af53",
"check": "erc20-indexed",
"impact": "Informational",
@ -117,6 +118,7 @@
],
"description": "ERC20 event IERC20BadTransfer(address,address,uint256) (tests/detectors/erc20-indexed/0.7.6/erc20_indexed.sol#19)does not index parameter to\n",
"markdown": "ERC20 event [IERC20BadTransfer(address,address,uint256)](tests/detectors/erc20-indexed/0.7.6/erc20_indexed.sol#L19)does not index parameter to\n",
"first_markdown_element": "tests/detectors/erc20-indexed/0.7.6/erc20_indexed.sol#L19",
"id": "29c46eb3a4695004959847ae09377729cdf3aa583de95560090b9bd49977c49b",
"check": "erc20-indexed",
"impact": "Informational",
@ -178,6 +180,7 @@
],
"description": "ERC20 event IERC20BadApproval(address,address,uint256) (tests/detectors/erc20-indexed/0.7.6/erc20_indexed.sol#20)does not index parameter owner\n",
"markdown": "ERC20 event [IERC20BadApproval(address,address,uint256)](tests/detectors/erc20-indexed/0.7.6/erc20_indexed.sol#L20)does not index parameter owner\n",
"first_markdown_element": "tests/detectors/erc20-indexed/0.7.6/erc20_indexed.sol#L20",
"id": "7d72b56a71ca96db304878f25484c496af1d283a9b777dc788f1473974057025",
"check": "erc20-indexed",
"impact": "Informational",
@ -239,6 +242,7 @@
],
"description": "ERC20 event IERC20BadApproval(address,address,uint256) (tests/detectors/erc20-indexed/0.7.6/erc20_indexed.sol#20)does not index parameter spender\n",
"markdown": "ERC20 event [IERC20BadApproval(address,address,uint256)](tests/detectors/erc20-indexed/0.7.6/erc20_indexed.sol#L20)does not index parameter spender\n",
"first_markdown_element": "tests/detectors/erc20-indexed/0.7.6/erc20_indexed.sol#L20",
"id": "df4d927d202bdca1fc411d6960d3f62ed2784f5eca7435cb0503f4154f2e3bc6",
"check": "erc20-indexed",
"impact": "Informational",

@ -76,6 +76,7 @@
],
"description": "Token (tests/detectors/erc20-interface/0.4.25/incorrect_erc20_interface.sol#3-10) has incorrect ERC20 function interface:Token.transfer(address,uint256) (tests/detectors/erc20-interface/0.4.25/incorrect_erc20_interface.sol#4)\n",
"markdown": "[Token](tests/detectors/erc20-interface/0.4.25/incorrect_erc20_interface.sol#L3-L10) has incorrect ERC20 function interface:[Token.transfer(address,uint256)](tests/detectors/erc20-interface/0.4.25/incorrect_erc20_interface.sol#L4)\n",
"first_markdown_element": "tests/detectors/erc20-interface/0.4.25/incorrect_erc20_interface.sol#L3-L10",
"id": "d3df2e48ae6e8a1b05b275de574b480853a0839c272ce889e8a1664ae432698e",
"check": "erc20-interface",
"impact": "Medium",
@ -157,6 +158,7 @@
],
"description": "Token (tests/detectors/erc20-interface/0.4.25/incorrect_erc20_interface.sol#3-10) has incorrect ERC20 function interface:Token.approve(address,uint256) (tests/detectors/erc20-interface/0.4.25/incorrect_erc20_interface.sol#5)\n",
"markdown": "[Token](tests/detectors/erc20-interface/0.4.25/incorrect_erc20_interface.sol#L3-L10) has incorrect ERC20 function interface:[Token.approve(address,uint256)](tests/detectors/erc20-interface/0.4.25/incorrect_erc20_interface.sol#L5)\n",
"first_markdown_element": "tests/detectors/erc20-interface/0.4.25/incorrect_erc20_interface.sol#L3-L10",
"id": "0fced3029cf59cf348a6b79c58dbb032d837fdd5a5f355600edebda1878e9e2e",
"check": "erc20-interface",
"impact": "Medium",
@ -238,6 +240,7 @@
],
"description": "Token (tests/detectors/erc20-interface/0.4.25/incorrect_erc20_interface.sol#3-10) has incorrect ERC20 function interface:Token.transferFrom(address,address,uint256) (tests/detectors/erc20-interface/0.4.25/incorrect_erc20_interface.sol#6)\n",
"markdown": "[Token](tests/detectors/erc20-interface/0.4.25/incorrect_erc20_interface.sol#L3-L10) has incorrect ERC20 function interface:[Token.transferFrom(address,address,uint256)](tests/detectors/erc20-interface/0.4.25/incorrect_erc20_interface.sol#L6)\n",
"first_markdown_element": "tests/detectors/erc20-interface/0.4.25/incorrect_erc20_interface.sol#L3-L10",
"id": "ba13a1588595032984a3fad39610a2414bb8fcb522d1e632d52fa947ff207d73",
"check": "erc20-interface",
"impact": "Medium",
@ -319,6 +322,7 @@
],
"description": "Token (tests/detectors/erc20-interface/0.4.25/incorrect_erc20_interface.sol#3-10) has incorrect ERC20 function interface:Token.totalSupply() (tests/detectors/erc20-interface/0.4.25/incorrect_erc20_interface.sol#7)\n",
"markdown": "[Token](tests/detectors/erc20-interface/0.4.25/incorrect_erc20_interface.sol#L3-L10) has incorrect ERC20 function interface:[Token.totalSupply()](tests/detectors/erc20-interface/0.4.25/incorrect_erc20_interface.sol#L7)\n",
"first_markdown_element": "tests/detectors/erc20-interface/0.4.25/incorrect_erc20_interface.sol#L3-L10",
"id": "c951e429e546af28ac08e241d391e874c1c9c70b0732ccfb63f3bbfb3eaac16e",
"check": "erc20-interface",
"impact": "Medium",
@ -400,6 +404,7 @@
],
"description": "Token (tests/detectors/erc20-interface/0.4.25/incorrect_erc20_interface.sol#3-10) has incorrect ERC20 function interface:Token.balanceOf(address) (tests/detectors/erc20-interface/0.4.25/incorrect_erc20_interface.sol#8)\n",
"markdown": "[Token](tests/detectors/erc20-interface/0.4.25/incorrect_erc20_interface.sol#L3-L10) has incorrect ERC20 function interface:[Token.balanceOf(address)](tests/detectors/erc20-interface/0.4.25/incorrect_erc20_interface.sol#L8)\n",
"first_markdown_element": "tests/detectors/erc20-interface/0.4.25/incorrect_erc20_interface.sol#L3-L10",
"id": "758ca2456030a36dbd6115f2ccb1a43f53f1dabd66ed079806df0f6b7b4d21ef",
"check": "erc20-interface",
"impact": "Medium",
@ -481,6 +486,7 @@
],
"description": "Token (tests/detectors/erc20-interface/0.4.25/incorrect_erc20_interface.sol#3-10) has incorrect ERC20 function interface:Token.allowance(address,address) (tests/detectors/erc20-interface/0.4.25/incorrect_erc20_interface.sol#9)\n",
"markdown": "[Token](tests/detectors/erc20-interface/0.4.25/incorrect_erc20_interface.sol#L3-L10) has incorrect ERC20 function interface:[Token.allowance(address,address)](tests/detectors/erc20-interface/0.4.25/incorrect_erc20_interface.sol#L9)\n",
"first_markdown_element": "tests/detectors/erc20-interface/0.4.25/incorrect_erc20_interface.sol#L3-L10",
"id": "1286abfe21b09e21e1cec8b991f73664e104fa39f7f4190690ece3af45bc0c7a",
"check": "erc20-interface",
"impact": "Medium",

@ -76,6 +76,7 @@
],
"description": "Token (tests/detectors/erc20-interface/0.5.16/incorrect_erc20_interface.sol#3-10) has incorrect ERC20 function interface:Token.transfer(address,uint256) (tests/detectors/erc20-interface/0.5.16/incorrect_erc20_interface.sol#4)\n",
"markdown": "[Token](tests/detectors/erc20-interface/0.5.16/incorrect_erc20_interface.sol#L3-L10) has incorrect ERC20 function interface:[Token.transfer(address,uint256)](tests/detectors/erc20-interface/0.5.16/incorrect_erc20_interface.sol#L4)\n",
"first_markdown_element": "tests/detectors/erc20-interface/0.5.16/incorrect_erc20_interface.sol#L3-L10",
"id": "d3df2e48ae6e8a1b05b275de574b480853a0839c272ce889e8a1664ae432698e",
"check": "erc20-interface",
"impact": "Medium",
@ -157,6 +158,7 @@
],
"description": "Token (tests/detectors/erc20-interface/0.5.16/incorrect_erc20_interface.sol#3-10) has incorrect ERC20 function interface:Token.approve(address,uint256) (tests/detectors/erc20-interface/0.5.16/incorrect_erc20_interface.sol#5)\n",
"markdown": "[Token](tests/detectors/erc20-interface/0.5.16/incorrect_erc20_interface.sol#L3-L10) has incorrect ERC20 function interface:[Token.approve(address,uint256)](tests/detectors/erc20-interface/0.5.16/incorrect_erc20_interface.sol#L5)\n",
"first_markdown_element": "tests/detectors/erc20-interface/0.5.16/incorrect_erc20_interface.sol#L3-L10",
"id": "0fced3029cf59cf348a6b79c58dbb032d837fdd5a5f355600edebda1878e9e2e",
"check": "erc20-interface",
"impact": "Medium",
@ -238,6 +240,7 @@
],
"description": "Token (tests/detectors/erc20-interface/0.5.16/incorrect_erc20_interface.sol#3-10) has incorrect ERC20 function interface:Token.transferFrom(address,address,uint256) (tests/detectors/erc20-interface/0.5.16/incorrect_erc20_interface.sol#6)\n",
"markdown": "[Token](tests/detectors/erc20-interface/0.5.16/incorrect_erc20_interface.sol#L3-L10) has incorrect ERC20 function interface:[Token.transferFrom(address,address,uint256)](tests/detectors/erc20-interface/0.5.16/incorrect_erc20_interface.sol#L6)\n",
"first_markdown_element": "tests/detectors/erc20-interface/0.5.16/incorrect_erc20_interface.sol#L3-L10",
"id": "ba13a1588595032984a3fad39610a2414bb8fcb522d1e632d52fa947ff207d73",
"check": "erc20-interface",
"impact": "Medium",
@ -319,6 +322,7 @@
],
"description": "Token (tests/detectors/erc20-interface/0.5.16/incorrect_erc20_interface.sol#3-10) has incorrect ERC20 function interface:Token.totalSupply() (tests/detectors/erc20-interface/0.5.16/incorrect_erc20_interface.sol#7)\n",
"markdown": "[Token](tests/detectors/erc20-interface/0.5.16/incorrect_erc20_interface.sol#L3-L10) has incorrect ERC20 function interface:[Token.totalSupply()](tests/detectors/erc20-interface/0.5.16/incorrect_erc20_interface.sol#L7)\n",
"first_markdown_element": "tests/detectors/erc20-interface/0.5.16/incorrect_erc20_interface.sol#L3-L10",
"id": "c951e429e546af28ac08e241d391e874c1c9c70b0732ccfb63f3bbfb3eaac16e",
"check": "erc20-interface",
"impact": "Medium",
@ -400,6 +404,7 @@
],
"description": "Token (tests/detectors/erc20-interface/0.5.16/incorrect_erc20_interface.sol#3-10) has incorrect ERC20 function interface:Token.balanceOf(address) (tests/detectors/erc20-interface/0.5.16/incorrect_erc20_interface.sol#8)\n",
"markdown": "[Token](tests/detectors/erc20-interface/0.5.16/incorrect_erc20_interface.sol#L3-L10) has incorrect ERC20 function interface:[Token.balanceOf(address)](tests/detectors/erc20-interface/0.5.16/incorrect_erc20_interface.sol#L8)\n",
"first_markdown_element": "tests/detectors/erc20-interface/0.5.16/incorrect_erc20_interface.sol#L3-L10",
"id": "758ca2456030a36dbd6115f2ccb1a43f53f1dabd66ed079806df0f6b7b4d21ef",
"check": "erc20-interface",
"impact": "Medium",
@ -481,6 +486,7 @@
],
"description": "Token (tests/detectors/erc20-interface/0.5.16/incorrect_erc20_interface.sol#3-10) has incorrect ERC20 function interface:Token.allowance(address,address) (tests/detectors/erc20-interface/0.5.16/incorrect_erc20_interface.sol#9)\n",
"markdown": "[Token](tests/detectors/erc20-interface/0.5.16/incorrect_erc20_interface.sol#L3-L10) has incorrect ERC20 function interface:[Token.allowance(address,address)](tests/detectors/erc20-interface/0.5.16/incorrect_erc20_interface.sol#L9)\n",
"first_markdown_element": "tests/detectors/erc20-interface/0.5.16/incorrect_erc20_interface.sol#L3-L10",
"id": "1286abfe21b09e21e1cec8b991f73664e104fa39f7f4190690ece3af45bc0c7a",
"check": "erc20-interface",
"impact": "Medium",

@ -76,6 +76,7 @@
],
"description": "Token (tests/detectors/erc20-interface/0.6.11/incorrect_erc20_interface.sol#3-10) has incorrect ERC20 function interface:Token.transfer(address,uint256) (tests/detectors/erc20-interface/0.6.11/incorrect_erc20_interface.sol#4)\n",
"markdown": "[Token](tests/detectors/erc20-interface/0.6.11/incorrect_erc20_interface.sol#L3-L10) has incorrect ERC20 function interface:[Token.transfer(address,uint256)](tests/detectors/erc20-interface/0.6.11/incorrect_erc20_interface.sol#L4)\n",
"first_markdown_element": "tests/detectors/erc20-interface/0.6.11/incorrect_erc20_interface.sol#L3-L10",
"id": "d3df2e48ae6e8a1b05b275de574b480853a0839c272ce889e8a1664ae432698e",
"check": "erc20-interface",
"impact": "Medium",
@ -157,6 +158,7 @@
],
"description": "Token (tests/detectors/erc20-interface/0.6.11/incorrect_erc20_interface.sol#3-10) has incorrect ERC20 function interface:Token.approve(address,uint256) (tests/detectors/erc20-interface/0.6.11/incorrect_erc20_interface.sol#5)\n",
"markdown": "[Token](tests/detectors/erc20-interface/0.6.11/incorrect_erc20_interface.sol#L3-L10) has incorrect ERC20 function interface:[Token.approve(address,uint256)](tests/detectors/erc20-interface/0.6.11/incorrect_erc20_interface.sol#L5)\n",
"first_markdown_element": "tests/detectors/erc20-interface/0.6.11/incorrect_erc20_interface.sol#L3-L10",
"id": "0fced3029cf59cf348a6b79c58dbb032d837fdd5a5f355600edebda1878e9e2e",
"check": "erc20-interface",
"impact": "Medium",
@ -238,6 +240,7 @@
],
"description": "Token (tests/detectors/erc20-interface/0.6.11/incorrect_erc20_interface.sol#3-10) has incorrect ERC20 function interface:Token.transferFrom(address,address,uint256) (tests/detectors/erc20-interface/0.6.11/incorrect_erc20_interface.sol#6)\n",
"markdown": "[Token](tests/detectors/erc20-interface/0.6.11/incorrect_erc20_interface.sol#L3-L10) has incorrect ERC20 function interface:[Token.transferFrom(address,address,uint256)](tests/detectors/erc20-interface/0.6.11/incorrect_erc20_interface.sol#L6)\n",
"first_markdown_element": "tests/detectors/erc20-interface/0.6.11/incorrect_erc20_interface.sol#L3-L10",
"id": "ba13a1588595032984a3fad39610a2414bb8fcb522d1e632d52fa947ff207d73",
"check": "erc20-interface",
"impact": "Medium",
@ -319,6 +322,7 @@
],
"description": "Token (tests/detectors/erc20-interface/0.6.11/incorrect_erc20_interface.sol#3-10) has incorrect ERC20 function interface:Token.totalSupply() (tests/detectors/erc20-interface/0.6.11/incorrect_erc20_interface.sol#7)\n",
"markdown": "[Token](tests/detectors/erc20-interface/0.6.11/incorrect_erc20_interface.sol#L3-L10) has incorrect ERC20 function interface:[Token.totalSupply()](tests/detectors/erc20-interface/0.6.11/incorrect_erc20_interface.sol#L7)\n",
"first_markdown_element": "tests/detectors/erc20-interface/0.6.11/incorrect_erc20_interface.sol#L3-L10",
"id": "c951e429e546af28ac08e241d391e874c1c9c70b0732ccfb63f3bbfb3eaac16e",
"check": "erc20-interface",
"impact": "Medium",
@ -400,6 +404,7 @@
],
"description": "Token (tests/detectors/erc20-interface/0.6.11/incorrect_erc20_interface.sol#3-10) has incorrect ERC20 function interface:Token.balanceOf(address) (tests/detectors/erc20-interface/0.6.11/incorrect_erc20_interface.sol#8)\n",
"markdown": "[Token](tests/detectors/erc20-interface/0.6.11/incorrect_erc20_interface.sol#L3-L10) has incorrect ERC20 function interface:[Token.balanceOf(address)](tests/detectors/erc20-interface/0.6.11/incorrect_erc20_interface.sol#L8)\n",
"first_markdown_element": "tests/detectors/erc20-interface/0.6.11/incorrect_erc20_interface.sol#L3-L10",
"id": "758ca2456030a36dbd6115f2ccb1a43f53f1dabd66ed079806df0f6b7b4d21ef",
"check": "erc20-interface",
"impact": "Medium",
@ -481,6 +486,7 @@
],
"description": "Token (tests/detectors/erc20-interface/0.6.11/incorrect_erc20_interface.sol#3-10) has incorrect ERC20 function interface:Token.allowance(address,address) (tests/detectors/erc20-interface/0.6.11/incorrect_erc20_interface.sol#9)\n",
"markdown": "[Token](tests/detectors/erc20-interface/0.6.11/incorrect_erc20_interface.sol#L3-L10) has incorrect ERC20 function interface:[Token.allowance(address,address)](tests/detectors/erc20-interface/0.6.11/incorrect_erc20_interface.sol#L9)\n",
"first_markdown_element": "tests/detectors/erc20-interface/0.6.11/incorrect_erc20_interface.sol#L3-L10",
"id": "1286abfe21b09e21e1cec8b991f73664e104fa39f7f4190690ece3af45bc0c7a",
"check": "erc20-interface",
"impact": "Medium",

@ -76,6 +76,7 @@
],
"description": "Token (tests/detectors/erc20-interface/0.7.6/incorrect_erc20_interface.sol#3-10) has incorrect ERC20 function interface:Token.transfer(address,uint256) (tests/detectors/erc20-interface/0.7.6/incorrect_erc20_interface.sol#4)\n",
"markdown": "[Token](tests/detectors/erc20-interface/0.7.6/incorrect_erc20_interface.sol#L3-L10) has incorrect ERC20 function interface:[Token.transfer(address,uint256)](tests/detectors/erc20-interface/0.7.6/incorrect_erc20_interface.sol#L4)\n",
"first_markdown_element": "tests/detectors/erc20-interface/0.7.6/incorrect_erc20_interface.sol#L3-L10",
"id": "d3df2e48ae6e8a1b05b275de574b480853a0839c272ce889e8a1664ae432698e",
"check": "erc20-interface",
"impact": "Medium",
@ -157,6 +158,7 @@
],
"description": "Token (tests/detectors/erc20-interface/0.7.6/incorrect_erc20_interface.sol#3-10) has incorrect ERC20 function interface:Token.approve(address,uint256) (tests/detectors/erc20-interface/0.7.6/incorrect_erc20_interface.sol#5)\n",
"markdown": "[Token](tests/detectors/erc20-interface/0.7.6/incorrect_erc20_interface.sol#L3-L10) has incorrect ERC20 function interface:[Token.approve(address,uint256)](tests/detectors/erc20-interface/0.7.6/incorrect_erc20_interface.sol#L5)\n",
"first_markdown_element": "tests/detectors/erc20-interface/0.7.6/incorrect_erc20_interface.sol#L3-L10",
"id": "0fced3029cf59cf348a6b79c58dbb032d837fdd5a5f355600edebda1878e9e2e",
"check": "erc20-interface",
"impact": "Medium",
@ -238,6 +240,7 @@
],
"description": "Token (tests/detectors/erc20-interface/0.7.6/incorrect_erc20_interface.sol#3-10) has incorrect ERC20 function interface:Token.transferFrom(address,address,uint256) (tests/detectors/erc20-interface/0.7.6/incorrect_erc20_interface.sol#6)\n",
"markdown": "[Token](tests/detectors/erc20-interface/0.7.6/incorrect_erc20_interface.sol#L3-L10) has incorrect ERC20 function interface:[Token.transferFrom(address,address,uint256)](tests/detectors/erc20-interface/0.7.6/incorrect_erc20_interface.sol#L6)\n",
"first_markdown_element": "tests/detectors/erc20-interface/0.7.6/incorrect_erc20_interface.sol#L3-L10",
"id": "ba13a1588595032984a3fad39610a2414bb8fcb522d1e632d52fa947ff207d73",
"check": "erc20-interface",
"impact": "Medium",
@ -319,6 +322,7 @@
],
"description": "Token (tests/detectors/erc20-interface/0.7.6/incorrect_erc20_interface.sol#3-10) has incorrect ERC20 function interface:Token.totalSupply() (tests/detectors/erc20-interface/0.7.6/incorrect_erc20_interface.sol#7)\n",
"markdown": "[Token](tests/detectors/erc20-interface/0.7.6/incorrect_erc20_interface.sol#L3-L10) has incorrect ERC20 function interface:[Token.totalSupply()](tests/detectors/erc20-interface/0.7.6/incorrect_erc20_interface.sol#L7)\n",
"first_markdown_element": "tests/detectors/erc20-interface/0.7.6/incorrect_erc20_interface.sol#L3-L10",
"id": "c951e429e546af28ac08e241d391e874c1c9c70b0732ccfb63f3bbfb3eaac16e",
"check": "erc20-interface",
"impact": "Medium",
@ -400,6 +404,7 @@
],
"description": "Token (tests/detectors/erc20-interface/0.7.6/incorrect_erc20_interface.sol#3-10) has incorrect ERC20 function interface:Token.balanceOf(address) (tests/detectors/erc20-interface/0.7.6/incorrect_erc20_interface.sol#8)\n",
"markdown": "[Token](tests/detectors/erc20-interface/0.7.6/incorrect_erc20_interface.sol#L3-L10) has incorrect ERC20 function interface:[Token.balanceOf(address)](tests/detectors/erc20-interface/0.7.6/incorrect_erc20_interface.sol#L8)\n",
"first_markdown_element": "tests/detectors/erc20-interface/0.7.6/incorrect_erc20_interface.sol#L3-L10",
"id": "758ca2456030a36dbd6115f2ccb1a43f53f1dabd66ed079806df0f6b7b4d21ef",
"check": "erc20-interface",
"impact": "Medium",
@ -481,6 +486,7 @@
],
"description": "Token (tests/detectors/erc20-interface/0.7.6/incorrect_erc20_interface.sol#3-10) has incorrect ERC20 function interface:Token.allowance(address,address) (tests/detectors/erc20-interface/0.7.6/incorrect_erc20_interface.sol#9)\n",
"markdown": "[Token](tests/detectors/erc20-interface/0.7.6/incorrect_erc20_interface.sol#L3-L10) has incorrect ERC20 function interface:[Token.allowance(address,address)](tests/detectors/erc20-interface/0.7.6/incorrect_erc20_interface.sol#L9)\n",
"first_markdown_element": "tests/detectors/erc20-interface/0.7.6/incorrect_erc20_interface.sol#L3-L10",
"id": "1286abfe21b09e21e1cec8b991f73664e104fa39f7f4190690ece3af45bc0c7a",
"check": "erc20-interface",
"impact": "Medium",

@ -74,6 +74,7 @@
],
"description": "Token (tests/detectors/erc721-interface/0.4.25/incorrect_erc721_interface.sol#6-16) has incorrect ERC721 function interface:IERC165.supportsInterface(bytes4) (tests/detectors/erc721-interface/0.4.25/incorrect_erc721_interface.sol#4)\n",
"markdown": "[Token](tests/detectors/erc721-interface/0.4.25/incorrect_erc721_interface.sol#L6-L16) has incorrect ERC721 function interface:[IERC165.supportsInterface(bytes4)](tests/detectors/erc721-interface/0.4.25/incorrect_erc721_interface.sol#L4)\n",
"first_markdown_element": "tests/detectors/erc721-interface/0.4.25/incorrect_erc721_interface.sol#L6-L16",
"id": "a8593587ca70c51a9ab827843babec3b3eb7f9a08d76eea1e5528e668f7b291d",
"check": "erc721-interface",
"impact": "Medium",
@ -161,6 +162,7 @@
],
"description": "Token (tests/detectors/erc721-interface/0.4.25/incorrect_erc721_interface.sol#6-16) has incorrect ERC721 function interface:Token.balanceOf(address) (tests/detectors/erc721-interface/0.4.25/incorrect_erc721_interface.sol#7)\n",
"markdown": "[Token](tests/detectors/erc721-interface/0.4.25/incorrect_erc721_interface.sol#L6-L16) has incorrect ERC721 function interface:[Token.balanceOf(address)](tests/detectors/erc721-interface/0.4.25/incorrect_erc721_interface.sol#L7)\n",
"first_markdown_element": "tests/detectors/erc721-interface/0.4.25/incorrect_erc721_interface.sol#L6-L16",
"id": "6fb9d0320e0b63e2c70f9844d5bea2be958e73beb6eaa4ccb2323ead0c7ef991",
"check": "erc721-interface",
"impact": "Medium",
@ -248,6 +250,7 @@
],
"description": "Token (tests/detectors/erc721-interface/0.4.25/incorrect_erc721_interface.sol#6-16) has incorrect ERC721 function interface:Token.ownerOf(uint256) (tests/detectors/erc721-interface/0.4.25/incorrect_erc721_interface.sol#8)\n",
"markdown": "[Token](tests/detectors/erc721-interface/0.4.25/incorrect_erc721_interface.sol#L6-L16) has incorrect ERC721 function interface:[Token.ownerOf(uint256)](tests/detectors/erc721-interface/0.4.25/incorrect_erc721_interface.sol#L8)\n",
"first_markdown_element": "tests/detectors/erc721-interface/0.4.25/incorrect_erc721_interface.sol#L6-L16",
"id": "7d9235dd4ef8bc29a3b7700597cc1e4efb846377c928e5e50c5f49cb37f288d2",
"check": "erc721-interface",
"impact": "Medium",
@ -335,6 +338,7 @@
],
"description": "Token (tests/detectors/erc721-interface/0.4.25/incorrect_erc721_interface.sol#6-16) has incorrect ERC721 function interface:Token.safeTransferFrom(address,address,uint256,bytes) (tests/detectors/erc721-interface/0.4.25/incorrect_erc721_interface.sol#9)\n",
"markdown": "[Token](tests/detectors/erc721-interface/0.4.25/incorrect_erc721_interface.sol#L6-L16) has incorrect ERC721 function interface:[Token.safeTransferFrom(address,address,uint256,bytes)](tests/detectors/erc721-interface/0.4.25/incorrect_erc721_interface.sol#L9)\n",
"first_markdown_element": "tests/detectors/erc721-interface/0.4.25/incorrect_erc721_interface.sol#L6-L16",
"id": "ccec612c4b5db00ab59b766b5dde3f8d3a8c6408ef595ab08bff21628587e2a1",
"check": "erc721-interface",
"impact": "Medium",
@ -422,6 +426,7 @@
],
"description": "Token (tests/detectors/erc721-interface/0.4.25/incorrect_erc721_interface.sol#6-16) has incorrect ERC721 function interface:Token.safeTransferFrom(address,address,uint256) (tests/detectors/erc721-interface/0.4.25/incorrect_erc721_interface.sol#10)\n",
"markdown": "[Token](tests/detectors/erc721-interface/0.4.25/incorrect_erc721_interface.sol#L6-L16) has incorrect ERC721 function interface:[Token.safeTransferFrom(address,address,uint256)](tests/detectors/erc721-interface/0.4.25/incorrect_erc721_interface.sol#L10)\n",
"first_markdown_element": "tests/detectors/erc721-interface/0.4.25/incorrect_erc721_interface.sol#L6-L16",
"id": "50ab7b0f39f327ac6deccf3c16b4e6fee1dc249072ac41a4bd485ccf0c12315b",
"check": "erc721-interface",
"impact": "Medium",
@ -509,6 +514,7 @@
],
"description": "Token (tests/detectors/erc721-interface/0.4.25/incorrect_erc721_interface.sol#6-16) has incorrect ERC721 function interface:Token.transferFrom(address,address,uint256) (tests/detectors/erc721-interface/0.4.25/incorrect_erc721_interface.sol#11)\n",
"markdown": "[Token](tests/detectors/erc721-interface/0.4.25/incorrect_erc721_interface.sol#L6-L16) has incorrect ERC721 function interface:[Token.transferFrom(address,address,uint256)](tests/detectors/erc721-interface/0.4.25/incorrect_erc721_interface.sol#L11)\n",
"first_markdown_element": "tests/detectors/erc721-interface/0.4.25/incorrect_erc721_interface.sol#L6-L16",
"id": "847b11227f3bfc9b120e0ea573f385a4bbc61c4b7f89f434864612a679b1133e",
"check": "erc721-interface",
"impact": "Medium",
@ -596,6 +602,7 @@
],
"description": "Token (tests/detectors/erc721-interface/0.4.25/incorrect_erc721_interface.sol#6-16) has incorrect ERC721 function interface:Token.approve(address,uint256) (tests/detectors/erc721-interface/0.4.25/incorrect_erc721_interface.sol#12)\n",
"markdown": "[Token](tests/detectors/erc721-interface/0.4.25/incorrect_erc721_interface.sol#L6-L16) has incorrect ERC721 function interface:[Token.approve(address,uint256)](tests/detectors/erc721-interface/0.4.25/incorrect_erc721_interface.sol#L12)\n",
"first_markdown_element": "tests/detectors/erc721-interface/0.4.25/incorrect_erc721_interface.sol#L6-L16",
"id": "439c95972d0e084aff057161164b13ab63f85bee31d80b568b7155e58eac4b5d",
"check": "erc721-interface",
"impact": "Medium",
@ -683,6 +690,7 @@
],
"description": "Token (tests/detectors/erc721-interface/0.4.25/incorrect_erc721_interface.sol#6-16) has incorrect ERC721 function interface:Token.setApprovalForAll(address,bool) (tests/detectors/erc721-interface/0.4.25/incorrect_erc721_interface.sol#13)\n",
"markdown": "[Token](tests/detectors/erc721-interface/0.4.25/incorrect_erc721_interface.sol#L6-L16) has incorrect ERC721 function interface:[Token.setApprovalForAll(address,bool)](tests/detectors/erc721-interface/0.4.25/incorrect_erc721_interface.sol#L13)\n",
"first_markdown_element": "tests/detectors/erc721-interface/0.4.25/incorrect_erc721_interface.sol#L6-L16",
"id": "b95e9bb000fb073c25fdbd9fff7bf0a3c44e04e70fc1a7da27c94c6b7fb8be40",
"check": "erc721-interface",
"impact": "Medium",
@ -770,6 +778,7 @@
],
"description": "Token (tests/detectors/erc721-interface/0.4.25/incorrect_erc721_interface.sol#6-16) has incorrect ERC721 function interface:Token.getApproved(uint256) (tests/detectors/erc721-interface/0.4.25/incorrect_erc721_interface.sol#14)\n",
"markdown": "[Token](tests/detectors/erc721-interface/0.4.25/incorrect_erc721_interface.sol#L6-L16) has incorrect ERC721 function interface:[Token.getApproved(uint256)](tests/detectors/erc721-interface/0.4.25/incorrect_erc721_interface.sol#L14)\n",
"first_markdown_element": "tests/detectors/erc721-interface/0.4.25/incorrect_erc721_interface.sol#L6-L16",
"id": "2dce4891c7abea0fa8a8a20a8b8482e7e1d46d54bfd750701c604d5dadd8b937",
"check": "erc721-interface",
"impact": "Medium",
@ -857,6 +866,7 @@
],
"description": "Token (tests/detectors/erc721-interface/0.4.25/incorrect_erc721_interface.sol#6-16) has incorrect ERC721 function interface:Token.isApprovedForAll(address,address) (tests/detectors/erc721-interface/0.4.25/incorrect_erc721_interface.sol#15)\n",
"markdown": "[Token](tests/detectors/erc721-interface/0.4.25/incorrect_erc721_interface.sol#L6-L16) has incorrect ERC721 function interface:[Token.isApprovedForAll(address,address)](tests/detectors/erc721-interface/0.4.25/incorrect_erc721_interface.sol#L15)\n",
"first_markdown_element": "tests/detectors/erc721-interface/0.4.25/incorrect_erc721_interface.sol#L6-L16",
"id": "fa9985c505689f9a45d1ac51e1dd8cf79eeb2c939946abfb5ac78f46e692d0eb",
"check": "erc721-interface",
"impact": "Medium",

@ -74,6 +74,7 @@
],
"description": "Token (tests/detectors/erc721-interface/0.5.16/incorrect_erc721_interface.sol#6-16) has incorrect ERC721 function interface:IERC165.supportsInterface(bytes4) (tests/detectors/erc721-interface/0.5.16/incorrect_erc721_interface.sol#4)\n",
"markdown": "[Token](tests/detectors/erc721-interface/0.5.16/incorrect_erc721_interface.sol#L6-L16) has incorrect ERC721 function interface:[IERC165.supportsInterface(bytes4)](tests/detectors/erc721-interface/0.5.16/incorrect_erc721_interface.sol#L4)\n",
"first_markdown_element": "tests/detectors/erc721-interface/0.5.16/incorrect_erc721_interface.sol#L6-L16",
"id": "a8593587ca70c51a9ab827843babec3b3eb7f9a08d76eea1e5528e668f7b291d",
"check": "erc721-interface",
"impact": "Medium",
@ -161,6 +162,7 @@
],
"description": "Token (tests/detectors/erc721-interface/0.5.16/incorrect_erc721_interface.sol#6-16) has incorrect ERC721 function interface:Token.balanceOf(address) (tests/detectors/erc721-interface/0.5.16/incorrect_erc721_interface.sol#7)\n",
"markdown": "[Token](tests/detectors/erc721-interface/0.5.16/incorrect_erc721_interface.sol#L6-L16) has incorrect ERC721 function interface:[Token.balanceOf(address)](tests/detectors/erc721-interface/0.5.16/incorrect_erc721_interface.sol#L7)\n",
"first_markdown_element": "tests/detectors/erc721-interface/0.5.16/incorrect_erc721_interface.sol#L6-L16",
"id": "6fb9d0320e0b63e2c70f9844d5bea2be958e73beb6eaa4ccb2323ead0c7ef991",
"check": "erc721-interface",
"impact": "Medium",
@ -248,6 +250,7 @@
],
"description": "Token (tests/detectors/erc721-interface/0.5.16/incorrect_erc721_interface.sol#6-16) has incorrect ERC721 function interface:Token.ownerOf(uint256) (tests/detectors/erc721-interface/0.5.16/incorrect_erc721_interface.sol#8)\n",
"markdown": "[Token](tests/detectors/erc721-interface/0.5.16/incorrect_erc721_interface.sol#L6-L16) has incorrect ERC721 function interface:[Token.ownerOf(uint256)](tests/detectors/erc721-interface/0.5.16/incorrect_erc721_interface.sol#L8)\n",
"first_markdown_element": "tests/detectors/erc721-interface/0.5.16/incorrect_erc721_interface.sol#L6-L16",
"id": "7d9235dd4ef8bc29a3b7700597cc1e4efb846377c928e5e50c5f49cb37f288d2",
"check": "erc721-interface",
"impact": "Medium",
@ -335,6 +338,7 @@
],
"description": "Token (tests/detectors/erc721-interface/0.5.16/incorrect_erc721_interface.sol#6-16) has incorrect ERC721 function interface:Token.safeTransferFrom(address,address,uint256,bytes) (tests/detectors/erc721-interface/0.5.16/incorrect_erc721_interface.sol#9)\n",
"markdown": "[Token](tests/detectors/erc721-interface/0.5.16/incorrect_erc721_interface.sol#L6-L16) has incorrect ERC721 function interface:[Token.safeTransferFrom(address,address,uint256,bytes)](tests/detectors/erc721-interface/0.5.16/incorrect_erc721_interface.sol#L9)\n",
"first_markdown_element": "tests/detectors/erc721-interface/0.5.16/incorrect_erc721_interface.sol#L6-L16",
"id": "ccec612c4b5db00ab59b766b5dde3f8d3a8c6408ef595ab08bff21628587e2a1",
"check": "erc721-interface",
"impact": "Medium",
@ -422,6 +426,7 @@
],
"description": "Token (tests/detectors/erc721-interface/0.5.16/incorrect_erc721_interface.sol#6-16) has incorrect ERC721 function interface:Token.safeTransferFrom(address,address,uint256) (tests/detectors/erc721-interface/0.5.16/incorrect_erc721_interface.sol#10)\n",
"markdown": "[Token](tests/detectors/erc721-interface/0.5.16/incorrect_erc721_interface.sol#L6-L16) has incorrect ERC721 function interface:[Token.safeTransferFrom(address,address,uint256)](tests/detectors/erc721-interface/0.5.16/incorrect_erc721_interface.sol#L10)\n",
"first_markdown_element": "tests/detectors/erc721-interface/0.5.16/incorrect_erc721_interface.sol#L6-L16",
"id": "50ab7b0f39f327ac6deccf3c16b4e6fee1dc249072ac41a4bd485ccf0c12315b",
"check": "erc721-interface",
"impact": "Medium",
@ -509,6 +514,7 @@
],
"description": "Token (tests/detectors/erc721-interface/0.5.16/incorrect_erc721_interface.sol#6-16) has incorrect ERC721 function interface:Token.transferFrom(address,address,uint256) (tests/detectors/erc721-interface/0.5.16/incorrect_erc721_interface.sol#11)\n",
"markdown": "[Token](tests/detectors/erc721-interface/0.5.16/incorrect_erc721_interface.sol#L6-L16) has incorrect ERC721 function interface:[Token.transferFrom(address,address,uint256)](tests/detectors/erc721-interface/0.5.16/incorrect_erc721_interface.sol#L11)\n",
"first_markdown_element": "tests/detectors/erc721-interface/0.5.16/incorrect_erc721_interface.sol#L6-L16",
"id": "847b11227f3bfc9b120e0ea573f385a4bbc61c4b7f89f434864612a679b1133e",
"check": "erc721-interface",
"impact": "Medium",
@ -596,6 +602,7 @@
],
"description": "Token (tests/detectors/erc721-interface/0.5.16/incorrect_erc721_interface.sol#6-16) has incorrect ERC721 function interface:Token.approve(address,uint256) (tests/detectors/erc721-interface/0.5.16/incorrect_erc721_interface.sol#12)\n",
"markdown": "[Token](tests/detectors/erc721-interface/0.5.16/incorrect_erc721_interface.sol#L6-L16) has incorrect ERC721 function interface:[Token.approve(address,uint256)](tests/detectors/erc721-interface/0.5.16/incorrect_erc721_interface.sol#L12)\n",
"first_markdown_element": "tests/detectors/erc721-interface/0.5.16/incorrect_erc721_interface.sol#L6-L16",
"id": "439c95972d0e084aff057161164b13ab63f85bee31d80b568b7155e58eac4b5d",
"check": "erc721-interface",
"impact": "Medium",
@ -683,6 +690,7 @@
],
"description": "Token (tests/detectors/erc721-interface/0.5.16/incorrect_erc721_interface.sol#6-16) has incorrect ERC721 function interface:Token.setApprovalForAll(address,bool) (tests/detectors/erc721-interface/0.5.16/incorrect_erc721_interface.sol#13)\n",
"markdown": "[Token](tests/detectors/erc721-interface/0.5.16/incorrect_erc721_interface.sol#L6-L16) has incorrect ERC721 function interface:[Token.setApprovalForAll(address,bool)](tests/detectors/erc721-interface/0.5.16/incorrect_erc721_interface.sol#L13)\n",
"first_markdown_element": "tests/detectors/erc721-interface/0.5.16/incorrect_erc721_interface.sol#L6-L16",
"id": "b95e9bb000fb073c25fdbd9fff7bf0a3c44e04e70fc1a7da27c94c6b7fb8be40",
"check": "erc721-interface",
"impact": "Medium",
@ -770,6 +778,7 @@
],
"description": "Token (tests/detectors/erc721-interface/0.5.16/incorrect_erc721_interface.sol#6-16) has incorrect ERC721 function interface:Token.getApproved(uint256) (tests/detectors/erc721-interface/0.5.16/incorrect_erc721_interface.sol#14)\n",
"markdown": "[Token](tests/detectors/erc721-interface/0.5.16/incorrect_erc721_interface.sol#L6-L16) has incorrect ERC721 function interface:[Token.getApproved(uint256)](tests/detectors/erc721-interface/0.5.16/incorrect_erc721_interface.sol#L14)\n",
"first_markdown_element": "tests/detectors/erc721-interface/0.5.16/incorrect_erc721_interface.sol#L6-L16",
"id": "2dce4891c7abea0fa8a8a20a8b8482e7e1d46d54bfd750701c604d5dadd8b937",
"check": "erc721-interface",
"impact": "Medium",
@ -857,6 +866,7 @@
],
"description": "Token (tests/detectors/erc721-interface/0.5.16/incorrect_erc721_interface.sol#6-16) has incorrect ERC721 function interface:Token.isApprovedForAll(address,address) (tests/detectors/erc721-interface/0.5.16/incorrect_erc721_interface.sol#15)\n",
"markdown": "[Token](tests/detectors/erc721-interface/0.5.16/incorrect_erc721_interface.sol#L6-L16) has incorrect ERC721 function interface:[Token.isApprovedForAll(address,address)](tests/detectors/erc721-interface/0.5.16/incorrect_erc721_interface.sol#L15)\n",
"first_markdown_element": "tests/detectors/erc721-interface/0.5.16/incorrect_erc721_interface.sol#L6-L16",
"id": "fa9985c505689f9a45d1ac51e1dd8cf79eeb2c939946abfb5ac78f46e692d0eb",
"check": "erc721-interface",
"impact": "Medium",

@ -74,6 +74,7 @@
],
"description": "Token (tests/detectors/erc721-interface/0.6.11/incorrect_erc721_interface.sol#6-16) has incorrect ERC721 function interface:IERC165.supportsInterface(bytes4) (tests/detectors/erc721-interface/0.6.11/incorrect_erc721_interface.sol#4)\n",
"markdown": "[Token](tests/detectors/erc721-interface/0.6.11/incorrect_erc721_interface.sol#L6-L16) has incorrect ERC721 function interface:[IERC165.supportsInterface(bytes4)](tests/detectors/erc721-interface/0.6.11/incorrect_erc721_interface.sol#L4)\n",
"first_markdown_element": "tests/detectors/erc721-interface/0.6.11/incorrect_erc721_interface.sol#L6-L16",
"id": "a8593587ca70c51a9ab827843babec3b3eb7f9a08d76eea1e5528e668f7b291d",
"check": "erc721-interface",
"impact": "Medium",
@ -161,6 +162,7 @@
],
"description": "Token (tests/detectors/erc721-interface/0.6.11/incorrect_erc721_interface.sol#6-16) has incorrect ERC721 function interface:Token.balanceOf(address) (tests/detectors/erc721-interface/0.6.11/incorrect_erc721_interface.sol#7)\n",
"markdown": "[Token](tests/detectors/erc721-interface/0.6.11/incorrect_erc721_interface.sol#L6-L16) has incorrect ERC721 function interface:[Token.balanceOf(address)](tests/detectors/erc721-interface/0.6.11/incorrect_erc721_interface.sol#L7)\n",
"first_markdown_element": "tests/detectors/erc721-interface/0.6.11/incorrect_erc721_interface.sol#L6-L16",
"id": "6fb9d0320e0b63e2c70f9844d5bea2be958e73beb6eaa4ccb2323ead0c7ef991",
"check": "erc721-interface",
"impact": "Medium",
@ -248,6 +250,7 @@
],
"description": "Token (tests/detectors/erc721-interface/0.6.11/incorrect_erc721_interface.sol#6-16) has incorrect ERC721 function interface:Token.ownerOf(uint256) (tests/detectors/erc721-interface/0.6.11/incorrect_erc721_interface.sol#8)\n",
"markdown": "[Token](tests/detectors/erc721-interface/0.6.11/incorrect_erc721_interface.sol#L6-L16) has incorrect ERC721 function interface:[Token.ownerOf(uint256)](tests/detectors/erc721-interface/0.6.11/incorrect_erc721_interface.sol#L8)\n",
"first_markdown_element": "tests/detectors/erc721-interface/0.6.11/incorrect_erc721_interface.sol#L6-L16",
"id": "7d9235dd4ef8bc29a3b7700597cc1e4efb846377c928e5e50c5f49cb37f288d2",
"check": "erc721-interface",
"impact": "Medium",
@ -335,6 +338,7 @@
],
"description": "Token (tests/detectors/erc721-interface/0.6.11/incorrect_erc721_interface.sol#6-16) has incorrect ERC721 function interface:Token.safeTransferFrom(address,address,uint256,bytes) (tests/detectors/erc721-interface/0.6.11/incorrect_erc721_interface.sol#9)\n",
"markdown": "[Token](tests/detectors/erc721-interface/0.6.11/incorrect_erc721_interface.sol#L6-L16) has incorrect ERC721 function interface:[Token.safeTransferFrom(address,address,uint256,bytes)](tests/detectors/erc721-interface/0.6.11/incorrect_erc721_interface.sol#L9)\n",
"first_markdown_element": "tests/detectors/erc721-interface/0.6.11/incorrect_erc721_interface.sol#L6-L16",
"id": "ccec612c4b5db00ab59b766b5dde3f8d3a8c6408ef595ab08bff21628587e2a1",
"check": "erc721-interface",
"impact": "Medium",
@ -422,6 +426,7 @@
],
"description": "Token (tests/detectors/erc721-interface/0.6.11/incorrect_erc721_interface.sol#6-16) has incorrect ERC721 function interface:Token.safeTransferFrom(address,address,uint256) (tests/detectors/erc721-interface/0.6.11/incorrect_erc721_interface.sol#10)\n",
"markdown": "[Token](tests/detectors/erc721-interface/0.6.11/incorrect_erc721_interface.sol#L6-L16) has incorrect ERC721 function interface:[Token.safeTransferFrom(address,address,uint256)](tests/detectors/erc721-interface/0.6.11/incorrect_erc721_interface.sol#L10)\n",
"first_markdown_element": "tests/detectors/erc721-interface/0.6.11/incorrect_erc721_interface.sol#L6-L16",
"id": "50ab7b0f39f327ac6deccf3c16b4e6fee1dc249072ac41a4bd485ccf0c12315b",
"check": "erc721-interface",
"impact": "Medium",
@ -509,6 +514,7 @@
],
"description": "Token (tests/detectors/erc721-interface/0.6.11/incorrect_erc721_interface.sol#6-16) has incorrect ERC721 function interface:Token.transferFrom(address,address,uint256) (tests/detectors/erc721-interface/0.6.11/incorrect_erc721_interface.sol#11)\n",
"markdown": "[Token](tests/detectors/erc721-interface/0.6.11/incorrect_erc721_interface.sol#L6-L16) has incorrect ERC721 function interface:[Token.transferFrom(address,address,uint256)](tests/detectors/erc721-interface/0.6.11/incorrect_erc721_interface.sol#L11)\n",
"first_markdown_element": "tests/detectors/erc721-interface/0.6.11/incorrect_erc721_interface.sol#L6-L16",
"id": "847b11227f3bfc9b120e0ea573f385a4bbc61c4b7f89f434864612a679b1133e",
"check": "erc721-interface",
"impact": "Medium",
@ -596,6 +602,7 @@
],
"description": "Token (tests/detectors/erc721-interface/0.6.11/incorrect_erc721_interface.sol#6-16) has incorrect ERC721 function interface:Token.approve(address,uint256) (tests/detectors/erc721-interface/0.6.11/incorrect_erc721_interface.sol#12)\n",
"markdown": "[Token](tests/detectors/erc721-interface/0.6.11/incorrect_erc721_interface.sol#L6-L16) has incorrect ERC721 function interface:[Token.approve(address,uint256)](tests/detectors/erc721-interface/0.6.11/incorrect_erc721_interface.sol#L12)\n",
"first_markdown_element": "tests/detectors/erc721-interface/0.6.11/incorrect_erc721_interface.sol#L6-L16",
"id": "439c95972d0e084aff057161164b13ab63f85bee31d80b568b7155e58eac4b5d",
"check": "erc721-interface",
"impact": "Medium",
@ -683,6 +690,7 @@
],
"description": "Token (tests/detectors/erc721-interface/0.6.11/incorrect_erc721_interface.sol#6-16) has incorrect ERC721 function interface:Token.setApprovalForAll(address,bool) (tests/detectors/erc721-interface/0.6.11/incorrect_erc721_interface.sol#13)\n",
"markdown": "[Token](tests/detectors/erc721-interface/0.6.11/incorrect_erc721_interface.sol#L6-L16) has incorrect ERC721 function interface:[Token.setApprovalForAll(address,bool)](tests/detectors/erc721-interface/0.6.11/incorrect_erc721_interface.sol#L13)\n",
"first_markdown_element": "tests/detectors/erc721-interface/0.6.11/incorrect_erc721_interface.sol#L6-L16",
"id": "b95e9bb000fb073c25fdbd9fff7bf0a3c44e04e70fc1a7da27c94c6b7fb8be40",
"check": "erc721-interface",
"impact": "Medium",
@ -770,6 +778,7 @@
],
"description": "Token (tests/detectors/erc721-interface/0.6.11/incorrect_erc721_interface.sol#6-16) has incorrect ERC721 function interface:Token.getApproved(uint256) (tests/detectors/erc721-interface/0.6.11/incorrect_erc721_interface.sol#14)\n",
"markdown": "[Token](tests/detectors/erc721-interface/0.6.11/incorrect_erc721_interface.sol#L6-L16) has incorrect ERC721 function interface:[Token.getApproved(uint256)](tests/detectors/erc721-interface/0.6.11/incorrect_erc721_interface.sol#L14)\n",
"first_markdown_element": "tests/detectors/erc721-interface/0.6.11/incorrect_erc721_interface.sol#L6-L16",
"id": "2dce4891c7abea0fa8a8a20a8b8482e7e1d46d54bfd750701c604d5dadd8b937",
"check": "erc721-interface",
"impact": "Medium",
@ -857,6 +866,7 @@
],
"description": "Token (tests/detectors/erc721-interface/0.6.11/incorrect_erc721_interface.sol#6-16) has incorrect ERC721 function interface:Token.isApprovedForAll(address,address) (tests/detectors/erc721-interface/0.6.11/incorrect_erc721_interface.sol#15)\n",
"markdown": "[Token](tests/detectors/erc721-interface/0.6.11/incorrect_erc721_interface.sol#L6-L16) has incorrect ERC721 function interface:[Token.isApprovedForAll(address,address)](tests/detectors/erc721-interface/0.6.11/incorrect_erc721_interface.sol#L15)\n",
"first_markdown_element": "tests/detectors/erc721-interface/0.6.11/incorrect_erc721_interface.sol#L6-L16",
"id": "fa9985c505689f9a45d1ac51e1dd8cf79eeb2c939946abfb5ac78f46e692d0eb",
"check": "erc721-interface",
"impact": "Medium",

@ -74,6 +74,7 @@
],
"description": "Token (tests/detectors/erc721-interface/0.7.6/incorrect_erc721_interface.sol#6-16) has incorrect ERC721 function interface:IERC165.supportsInterface(bytes4) (tests/detectors/erc721-interface/0.7.6/incorrect_erc721_interface.sol#4)\n",
"markdown": "[Token](tests/detectors/erc721-interface/0.7.6/incorrect_erc721_interface.sol#L6-L16) has incorrect ERC721 function interface:[IERC165.supportsInterface(bytes4)](tests/detectors/erc721-interface/0.7.6/incorrect_erc721_interface.sol#L4)\n",
"first_markdown_element": "tests/detectors/erc721-interface/0.7.6/incorrect_erc721_interface.sol#L6-L16",
"id": "a8593587ca70c51a9ab827843babec3b3eb7f9a08d76eea1e5528e668f7b291d",
"check": "erc721-interface",
"impact": "Medium",
@ -161,6 +162,7 @@
],
"description": "Token (tests/detectors/erc721-interface/0.7.6/incorrect_erc721_interface.sol#6-16) has incorrect ERC721 function interface:Token.balanceOf(address) (tests/detectors/erc721-interface/0.7.6/incorrect_erc721_interface.sol#7)\n",
"markdown": "[Token](tests/detectors/erc721-interface/0.7.6/incorrect_erc721_interface.sol#L6-L16) has incorrect ERC721 function interface:[Token.balanceOf(address)](tests/detectors/erc721-interface/0.7.6/incorrect_erc721_interface.sol#L7)\n",
"first_markdown_element": "tests/detectors/erc721-interface/0.7.6/incorrect_erc721_interface.sol#L6-L16",
"id": "6fb9d0320e0b63e2c70f9844d5bea2be958e73beb6eaa4ccb2323ead0c7ef991",
"check": "erc721-interface",
"impact": "Medium",
@ -248,6 +250,7 @@
],
"description": "Token (tests/detectors/erc721-interface/0.7.6/incorrect_erc721_interface.sol#6-16) has incorrect ERC721 function interface:Token.ownerOf(uint256) (tests/detectors/erc721-interface/0.7.6/incorrect_erc721_interface.sol#8)\n",
"markdown": "[Token](tests/detectors/erc721-interface/0.7.6/incorrect_erc721_interface.sol#L6-L16) has incorrect ERC721 function interface:[Token.ownerOf(uint256)](tests/detectors/erc721-interface/0.7.6/incorrect_erc721_interface.sol#L8)\n",
"first_markdown_element": "tests/detectors/erc721-interface/0.7.6/incorrect_erc721_interface.sol#L6-L16",
"id": "7d9235dd4ef8bc29a3b7700597cc1e4efb846377c928e5e50c5f49cb37f288d2",
"check": "erc721-interface",
"impact": "Medium",
@ -335,6 +338,7 @@
],
"description": "Token (tests/detectors/erc721-interface/0.7.6/incorrect_erc721_interface.sol#6-16) has incorrect ERC721 function interface:Token.safeTransferFrom(address,address,uint256,bytes) (tests/detectors/erc721-interface/0.7.6/incorrect_erc721_interface.sol#9)\n",
"markdown": "[Token](tests/detectors/erc721-interface/0.7.6/incorrect_erc721_interface.sol#L6-L16) has incorrect ERC721 function interface:[Token.safeTransferFrom(address,address,uint256,bytes)](tests/detectors/erc721-interface/0.7.6/incorrect_erc721_interface.sol#L9)\n",
"first_markdown_element": "tests/detectors/erc721-interface/0.7.6/incorrect_erc721_interface.sol#L6-L16",
"id": "ccec612c4b5db00ab59b766b5dde3f8d3a8c6408ef595ab08bff21628587e2a1",
"check": "erc721-interface",
"impact": "Medium",
@ -422,6 +426,7 @@
],
"description": "Token (tests/detectors/erc721-interface/0.7.6/incorrect_erc721_interface.sol#6-16) has incorrect ERC721 function interface:Token.safeTransferFrom(address,address,uint256) (tests/detectors/erc721-interface/0.7.6/incorrect_erc721_interface.sol#10)\n",
"markdown": "[Token](tests/detectors/erc721-interface/0.7.6/incorrect_erc721_interface.sol#L6-L16) has incorrect ERC721 function interface:[Token.safeTransferFrom(address,address,uint256)](tests/detectors/erc721-interface/0.7.6/incorrect_erc721_interface.sol#L10)\n",
"first_markdown_element": "tests/detectors/erc721-interface/0.7.6/incorrect_erc721_interface.sol#L6-L16",
"id": "50ab7b0f39f327ac6deccf3c16b4e6fee1dc249072ac41a4bd485ccf0c12315b",
"check": "erc721-interface",
"impact": "Medium",
@ -509,6 +514,7 @@
],
"description": "Token (tests/detectors/erc721-interface/0.7.6/incorrect_erc721_interface.sol#6-16) has incorrect ERC721 function interface:Token.transferFrom(address,address,uint256) (tests/detectors/erc721-interface/0.7.6/incorrect_erc721_interface.sol#11)\n",
"markdown": "[Token](tests/detectors/erc721-interface/0.7.6/incorrect_erc721_interface.sol#L6-L16) has incorrect ERC721 function interface:[Token.transferFrom(address,address,uint256)](tests/detectors/erc721-interface/0.7.6/incorrect_erc721_interface.sol#L11)\n",
"first_markdown_element": "tests/detectors/erc721-interface/0.7.6/incorrect_erc721_interface.sol#L6-L16",
"id": "847b11227f3bfc9b120e0ea573f385a4bbc61c4b7f89f434864612a679b1133e",
"check": "erc721-interface",
"impact": "Medium",
@ -596,6 +602,7 @@
],
"description": "Token (tests/detectors/erc721-interface/0.7.6/incorrect_erc721_interface.sol#6-16) has incorrect ERC721 function interface:Token.approve(address,uint256) (tests/detectors/erc721-interface/0.7.6/incorrect_erc721_interface.sol#12)\n",
"markdown": "[Token](tests/detectors/erc721-interface/0.7.6/incorrect_erc721_interface.sol#L6-L16) has incorrect ERC721 function interface:[Token.approve(address,uint256)](tests/detectors/erc721-interface/0.7.6/incorrect_erc721_interface.sol#L12)\n",
"first_markdown_element": "tests/detectors/erc721-interface/0.7.6/incorrect_erc721_interface.sol#L6-L16",
"id": "439c95972d0e084aff057161164b13ab63f85bee31d80b568b7155e58eac4b5d",
"check": "erc721-interface",
"impact": "Medium",
@ -683,6 +690,7 @@
],
"description": "Token (tests/detectors/erc721-interface/0.7.6/incorrect_erc721_interface.sol#6-16) has incorrect ERC721 function interface:Token.setApprovalForAll(address,bool) (tests/detectors/erc721-interface/0.7.6/incorrect_erc721_interface.sol#13)\n",
"markdown": "[Token](tests/detectors/erc721-interface/0.7.6/incorrect_erc721_interface.sol#L6-L16) has incorrect ERC721 function interface:[Token.setApprovalForAll(address,bool)](tests/detectors/erc721-interface/0.7.6/incorrect_erc721_interface.sol#L13)\n",
"first_markdown_element": "tests/detectors/erc721-interface/0.7.6/incorrect_erc721_interface.sol#L6-L16",
"id": "b95e9bb000fb073c25fdbd9fff7bf0a3c44e04e70fc1a7da27c94c6b7fb8be40",
"check": "erc721-interface",
"impact": "Medium",
@ -770,6 +778,7 @@
],
"description": "Token (tests/detectors/erc721-interface/0.7.6/incorrect_erc721_interface.sol#6-16) has incorrect ERC721 function interface:Token.getApproved(uint256) (tests/detectors/erc721-interface/0.7.6/incorrect_erc721_interface.sol#14)\n",
"markdown": "[Token](tests/detectors/erc721-interface/0.7.6/incorrect_erc721_interface.sol#L6-L16) has incorrect ERC721 function interface:[Token.getApproved(uint256)](tests/detectors/erc721-interface/0.7.6/incorrect_erc721_interface.sol#L14)\n",
"first_markdown_element": "tests/detectors/erc721-interface/0.7.6/incorrect_erc721_interface.sol#L6-L16",
"id": "2dce4891c7abea0fa8a8a20a8b8482e7e1d46d54bfd750701c604d5dadd8b937",
"check": "erc721-interface",
"impact": "Medium",
@ -857,6 +866,7 @@
],
"description": "Token (tests/detectors/erc721-interface/0.7.6/incorrect_erc721_interface.sol#6-16) has incorrect ERC721 function interface:Token.isApprovedForAll(address,address) (tests/detectors/erc721-interface/0.7.6/incorrect_erc721_interface.sol#15)\n",
"markdown": "[Token](tests/detectors/erc721-interface/0.7.6/incorrect_erc721_interface.sol#L6-L16) has incorrect ERC721 function interface:[Token.isApprovedForAll(address,address)](tests/detectors/erc721-interface/0.7.6/incorrect_erc721_interface.sol#L15)\n",
"first_markdown_element": "tests/detectors/erc721-interface/0.7.6/incorrect_erc721_interface.sol#L6-L16",
"id": "fa9985c505689f9a45d1ac51e1dd8cf79eeb2c939946abfb5ac78f46e692d0eb",
"check": "erc721-interface",
"impact": "Medium",

@ -209,6 +209,7 @@
],
"description": "Bug.bad0() (tests/detectors/events-access/0.4.25/missing_events_access_control.sol#15-17) should emit an event for: \n\t- owner = msg.sender (tests/detectors/events-access/0.4.25/missing_events_access_control.sol#16) \n",
"markdown": "[Bug.bad0()](tests/detectors/events-access/0.4.25/missing_events_access_control.sol#L15-L17) should emit an event for: \n\t- [owner = msg.sender](tests/detectors/events-access/0.4.25/missing_events_access_control.sol#L16) \n",
"first_markdown_element": "tests/detectors/events-access/0.4.25/missing_events_access_control.sol#L15-L17",
"id": "4d3c0f7336bc2f5248fb9488caa06bf496a1076398fca7a730a4e18ef9eedb23",
"check": "events-access",
"impact": "Low",
@ -423,6 +424,7 @@
],
"description": "Bug.bad1(address) (tests/detectors/events-access/0.4.25/missing_events_access_control.sol#19-21) should emit an event for: \n\t- owner = newOwner (tests/detectors/events-access/0.4.25/missing_events_access_control.sol#20) \n",
"markdown": "[Bug.bad1(address)](tests/detectors/events-access/0.4.25/missing_events_access_control.sol#L19-L21) should emit an event for: \n\t- [owner = newOwner](tests/detectors/events-access/0.4.25/missing_events_access_control.sol#L20) \n",
"first_markdown_element": "tests/detectors/events-access/0.4.25/missing_events_access_control.sol#L19-L21",
"id": "b2bf34ab3d02054c5f803cd517689d1e3d055b46ca612b2457d845d8d4b94731",
"check": "events-access",
"impact": "Low",
@ -639,6 +641,7 @@
],
"description": "Bug.bad2(address) (tests/detectors/events-access/0.4.25/missing_events_access_control.sol#23-26) should emit an event for: \n\t- owner = newOwner (tests/detectors/events-access/0.4.25/missing_events_access_control.sol#25) \n",
"markdown": "[Bug.bad2(address)](tests/detectors/events-access/0.4.25/missing_events_access_control.sol#L23-L26) should emit an event for: \n\t- [owner = newOwner](tests/detectors/events-access/0.4.25/missing_events_access_control.sol#L25) \n",
"first_markdown_element": "tests/detectors/events-access/0.4.25/missing_events_access_control.sol#L23-L26",
"id": "9411f6b4b3e6f3833a72789f341adf88796bcb58b4a12a47a6f7117746d09c53",
"check": "events-access",
"impact": "Low",

@ -209,6 +209,7 @@
],
"description": "Bug.bad0() (tests/detectors/events-access/0.5.16/missing_events_access_control.sol#15-17) should emit an event for: \n\t- owner = msg.sender (tests/detectors/events-access/0.5.16/missing_events_access_control.sol#16) \n",
"markdown": "[Bug.bad0()](tests/detectors/events-access/0.5.16/missing_events_access_control.sol#L15-L17) should emit an event for: \n\t- [owner = msg.sender](tests/detectors/events-access/0.5.16/missing_events_access_control.sol#L16) \n",
"first_markdown_element": "tests/detectors/events-access/0.5.16/missing_events_access_control.sol#L15-L17",
"id": "99e09713b41d4b164cc0f4a88f48e6d0bd94128636c57b1bee357ac1fda130d7",
"check": "events-access",
"impact": "Low",
@ -423,6 +424,7 @@
],
"description": "Bug.bad1(address) (tests/detectors/events-access/0.5.16/missing_events_access_control.sol#19-21) should emit an event for: \n\t- owner = newOwner (tests/detectors/events-access/0.5.16/missing_events_access_control.sol#20) \n",
"markdown": "[Bug.bad1(address)](tests/detectors/events-access/0.5.16/missing_events_access_control.sol#L19-L21) should emit an event for: \n\t- [owner = newOwner](tests/detectors/events-access/0.5.16/missing_events_access_control.sol#L20) \n",
"first_markdown_element": "tests/detectors/events-access/0.5.16/missing_events_access_control.sol#L19-L21",
"id": "a8b5423d1085668a105afd674978791ad0b57f1c9ab15b7db682c3dfac7a49b2",
"check": "events-access",
"impact": "Low",
@ -639,6 +641,7 @@
],
"description": "Bug.bad2(address) (tests/detectors/events-access/0.5.16/missing_events_access_control.sol#23-26) should emit an event for: \n\t- owner = newOwner (tests/detectors/events-access/0.5.16/missing_events_access_control.sol#25) \n",
"markdown": "[Bug.bad2(address)](tests/detectors/events-access/0.5.16/missing_events_access_control.sol#L23-L26) should emit an event for: \n\t- [owner = newOwner](tests/detectors/events-access/0.5.16/missing_events_access_control.sol#L25) \n",
"first_markdown_element": "tests/detectors/events-access/0.5.16/missing_events_access_control.sol#L23-L26",
"id": "1562e590ef85efee605bdbf837a010ad06cdb04cec40ac4a7ca7c8cc25cf4161",
"check": "events-access",
"impact": "Low",

@ -209,6 +209,7 @@
],
"description": "Bug.bad0() (tests/detectors/events-access/0.6.11/missing_events_access_control.sol#15-17) should emit an event for: \n\t- owner = msg.sender (tests/detectors/events-access/0.6.11/missing_events_access_control.sol#16) \n",
"markdown": "[Bug.bad0()](tests/detectors/events-access/0.6.11/missing_events_access_control.sol#L15-L17) should emit an event for: \n\t- [owner = msg.sender](tests/detectors/events-access/0.6.11/missing_events_access_control.sol#L16) \n",
"first_markdown_element": "tests/detectors/events-access/0.6.11/missing_events_access_control.sol#L15-L17",
"id": "81ef3707d2eed91cd30ba6e7368fa40206ec32eec757bb0af632c4b7885bd92c",
"check": "events-access",
"impact": "Low",
@ -423,6 +424,7 @@
],
"description": "Bug.bad1(address) (tests/detectors/events-access/0.6.11/missing_events_access_control.sol#19-21) should emit an event for: \n\t- owner = newOwner (tests/detectors/events-access/0.6.11/missing_events_access_control.sol#20) \n",
"markdown": "[Bug.bad1(address)](tests/detectors/events-access/0.6.11/missing_events_access_control.sol#L19-L21) should emit an event for: \n\t- [owner = newOwner](tests/detectors/events-access/0.6.11/missing_events_access_control.sol#L20) \n",
"first_markdown_element": "tests/detectors/events-access/0.6.11/missing_events_access_control.sol#L19-L21",
"id": "7dd824ee9b2f6100abf2b1e95d84c1b1393a4ab27a06676b2a5d7da164788a00",
"check": "events-access",
"impact": "Low",
@ -639,6 +641,7 @@
],
"description": "Bug.bad2(address) (tests/detectors/events-access/0.6.11/missing_events_access_control.sol#23-26) should emit an event for: \n\t- owner = newOwner (tests/detectors/events-access/0.6.11/missing_events_access_control.sol#25) \n",
"markdown": "[Bug.bad2(address)](tests/detectors/events-access/0.6.11/missing_events_access_control.sol#L23-L26) should emit an event for: \n\t- [owner = newOwner](tests/detectors/events-access/0.6.11/missing_events_access_control.sol#L25) \n",
"first_markdown_element": "tests/detectors/events-access/0.6.11/missing_events_access_control.sol#L23-L26",
"id": "a1b2818a2d7f222d9f8e8d8f7730fe9e8b24c9863637b9ecd2f395eb68fa3511",
"check": "events-access",
"impact": "Low",

@ -209,6 +209,7 @@
],
"description": "Bug.bad0() (tests/detectors/events-access/0.7.6/missing_events_access_control.sol#15-17) should emit an event for: \n\t- owner = msg.sender (tests/detectors/events-access/0.7.6/missing_events_access_control.sol#16) \n",
"markdown": "[Bug.bad0()](tests/detectors/events-access/0.7.6/missing_events_access_control.sol#L15-L17) should emit an event for: \n\t- [owner = msg.sender](tests/detectors/events-access/0.7.6/missing_events_access_control.sol#L16) \n",
"first_markdown_element": "tests/detectors/events-access/0.7.6/missing_events_access_control.sol#L15-L17",
"id": "2fb533ae76197f4d08ef6a97b9f0ee983db552644ae44807c761889fc5a86c22",
"check": "events-access",
"impact": "Low",
@ -423,6 +424,7 @@
],
"description": "Bug.bad1(address) (tests/detectors/events-access/0.7.6/missing_events_access_control.sol#19-21) should emit an event for: \n\t- owner = newOwner (tests/detectors/events-access/0.7.6/missing_events_access_control.sol#20) \n",
"markdown": "[Bug.bad1(address)](tests/detectors/events-access/0.7.6/missing_events_access_control.sol#L19-L21) should emit an event for: \n\t- [owner = newOwner](tests/detectors/events-access/0.7.6/missing_events_access_control.sol#L20) \n",
"first_markdown_element": "tests/detectors/events-access/0.7.6/missing_events_access_control.sol#L19-L21",
"id": "d319284c1ad2023a792ace9e7b2371966f789c5acf5ab90b1cc5935060f855f0",
"check": "events-access",
"impact": "Low",
@ -639,6 +641,7 @@
],
"description": "Bug.bad2(address) (tests/detectors/events-access/0.7.6/missing_events_access_control.sol#23-26) should emit an event for: \n\t- owner = newOwner (tests/detectors/events-access/0.7.6/missing_events_access_control.sol#25) \n",
"markdown": "[Bug.bad2(address)](tests/detectors/events-access/0.7.6/missing_events_access_control.sol#L23-L26) should emit an event for: \n\t- [owner = newOwner](tests/detectors/events-access/0.7.6/missing_events_access_control.sol#L25) \n",
"first_markdown_element": "tests/detectors/events-access/0.7.6/missing_events_access_control.sol#L23-L26",
"id": "3b63f24bd57a54fab8af7d3292bd8444c3dc834bf43dfd96be0e06ca0027299c",
"check": "events-access",
"impact": "Low",

@ -249,6 +249,7 @@
],
"description": "Bug.bad0(uint8) (tests/detectors/events-maths/0.4.25/missing_events_arithmetic.sol#22-24) should emit an event for: \n\t- uprice8 = _price (tests/detectors/events-maths/0.4.25/missing_events_arithmetic.sol#23) \n",
"markdown": "[Bug.bad0(uint8)](tests/detectors/events-maths/0.4.25/missing_events_arithmetic.sol#L22-L24) should emit an event for: \n\t- [uprice8 = _price](tests/detectors/events-maths/0.4.25/missing_events_arithmetic.sol#L23) \n",
"first_markdown_element": "tests/detectors/events-maths/0.4.25/missing_events_arithmetic.sol#L22-L24",
"id": "5bdc3116ab3855778ce4857872000648491e61af71273e503cc9439c5e8740c1",
"check": "events-maths",
"impact": "Low",
@ -503,6 +504,7 @@
],
"description": "Bug.bad1(int16) (tests/detectors/events-maths/0.4.25/missing_events_arithmetic.sol#30-32) should emit an event for: \n\t- iprice16 = _price (tests/detectors/events-maths/0.4.25/missing_events_arithmetic.sol#31) \n",
"markdown": "[Bug.bad1(int16)](tests/detectors/events-maths/0.4.25/missing_events_arithmetic.sol#L30-L32) should emit an event for: \n\t- [iprice16 = _price](tests/detectors/events-maths/0.4.25/missing_events_arithmetic.sol#L31) \n",
"first_markdown_element": "tests/detectors/events-maths/0.4.25/missing_events_arithmetic.sol#L30-L32",
"id": "a8bc1236abe35dd73049b7e452352ea609772a11ca5cc92e0ee958ac94e5a577",
"check": "events-maths",
"impact": "Low",

@ -249,6 +249,7 @@
],
"description": "Bug.bad0(uint8) (tests/detectors/events-maths/0.5.16/missing_events_arithmetic.sol#22-24) should emit an event for: \n\t- uprice8 = _price (tests/detectors/events-maths/0.5.16/missing_events_arithmetic.sol#23) \n",
"markdown": "[Bug.bad0(uint8)](tests/detectors/events-maths/0.5.16/missing_events_arithmetic.sol#L22-L24) should emit an event for: \n\t- [uprice8 = _price](tests/detectors/events-maths/0.5.16/missing_events_arithmetic.sol#L23) \n",
"first_markdown_element": "tests/detectors/events-maths/0.5.16/missing_events_arithmetic.sol#L22-L24",
"id": "07662c5e48ff5320e1a777c6014a5c08a4afe75e11a9c5219acab83b345345d0",
"check": "events-maths",
"impact": "Low",
@ -503,6 +504,7 @@
],
"description": "Bug.bad1(int16) (tests/detectors/events-maths/0.5.16/missing_events_arithmetic.sol#30-32) should emit an event for: \n\t- iprice16 = _price (tests/detectors/events-maths/0.5.16/missing_events_arithmetic.sol#31) \n",
"markdown": "[Bug.bad1(int16)](tests/detectors/events-maths/0.5.16/missing_events_arithmetic.sol#L30-L32) should emit an event for: \n\t- [iprice16 = _price](tests/detectors/events-maths/0.5.16/missing_events_arithmetic.sol#L31) \n",
"first_markdown_element": "tests/detectors/events-maths/0.5.16/missing_events_arithmetic.sol#L30-L32",
"id": "57f7648cceb76092e0e6102aa9787e808eb435435277dbde46ef016eb1047aa6",
"check": "events-maths",
"impact": "Low",

@ -249,6 +249,7 @@
],
"description": "Bug.bad0(uint8) (tests/detectors/events-maths/0.6.11/missing_events_arithmetic.sol#22-24) should emit an event for: \n\t- uprice8 = _price (tests/detectors/events-maths/0.6.11/missing_events_arithmetic.sol#23) \n",
"markdown": "[Bug.bad0(uint8)](tests/detectors/events-maths/0.6.11/missing_events_arithmetic.sol#L22-L24) should emit an event for: \n\t- [uprice8 = _price](tests/detectors/events-maths/0.6.11/missing_events_arithmetic.sol#L23) \n",
"first_markdown_element": "tests/detectors/events-maths/0.6.11/missing_events_arithmetic.sol#L22-L24",
"id": "8939d396ba9831d820e0960a02ce00dcc748cf3c833cb57bec01898a8782ce10",
"check": "events-maths",
"impact": "Low",
@ -503,6 +504,7 @@
],
"description": "Bug.bad1(int16) (tests/detectors/events-maths/0.6.11/missing_events_arithmetic.sol#30-32) should emit an event for: \n\t- iprice16 = _price (tests/detectors/events-maths/0.6.11/missing_events_arithmetic.sol#31) \n",
"markdown": "[Bug.bad1(int16)](tests/detectors/events-maths/0.6.11/missing_events_arithmetic.sol#L30-L32) should emit an event for: \n\t- [iprice16 = _price](tests/detectors/events-maths/0.6.11/missing_events_arithmetic.sol#L31) \n",
"first_markdown_element": "tests/detectors/events-maths/0.6.11/missing_events_arithmetic.sol#L30-L32",
"id": "8cfd768ccce23b341e194537946d6ae90c8bbfb9ab94658a7044848969769e1a",
"check": "events-maths",
"impact": "Low",

@ -249,6 +249,7 @@
],
"description": "Bug.bad0(uint8) (tests/detectors/events-maths/0.7.6/missing_events_arithmetic.sol#22-24) should emit an event for: \n\t- uprice8 = _price (tests/detectors/events-maths/0.7.6/missing_events_arithmetic.sol#23) \n",
"markdown": "[Bug.bad0(uint8)](tests/detectors/events-maths/0.7.6/missing_events_arithmetic.sol#L22-L24) should emit an event for: \n\t- [uprice8 = _price](tests/detectors/events-maths/0.7.6/missing_events_arithmetic.sol#L23) \n",
"first_markdown_element": "tests/detectors/events-maths/0.7.6/missing_events_arithmetic.sol#L22-L24",
"id": "833efa3b1dab85aef7a00a7bf77bfe290cb2933e11eed34150a1e54a9644a093",
"check": "events-maths",
"impact": "Low",
@ -503,6 +504,7 @@
],
"description": "Bug.bad1(int16) (tests/detectors/events-maths/0.7.6/missing_events_arithmetic.sol#30-32) should emit an event for: \n\t- iprice16 = _price (tests/detectors/events-maths/0.7.6/missing_events_arithmetic.sol#31) \n",
"markdown": "[Bug.bad1(int16)](tests/detectors/events-maths/0.7.6/missing_events_arithmetic.sol#L30-L32) should emit an event for: \n\t- [iprice16 = _price](tests/detectors/events-maths/0.7.6/missing_events_arithmetic.sol#L31) \n",
"first_markdown_element": "tests/detectors/events-maths/0.7.6/missing_events_arithmetic.sol#L30-L32",
"id": "22cd7f2678dfbd4185d6254ad55b620bd3b20a406d88d9f53412ca97d9c3bf03",
"check": "events-maths",
"impact": "Low",

@ -64,6 +64,7 @@
],
"description": "funcNotCalled3() should be declared external:\n\t- ContractWithFunctionNotCalled.funcNotCalled3() (tests/detectors/external-function/0.4.25/external_function.sol#13-15)\n",
"markdown": "funcNotCalled3() should be declared external:\n\t- [ContractWithFunctionNotCalled.funcNotCalled3()](tests/detectors/external-function/0.4.25/external_function.sol#L13-L15)\n",
"first_markdown_element": "tests/detectors/external-function/0.4.25/external_function.sol#L13-L15",
"id": "026d9a579ea0304e58c8a5174296494f4b672e4ea032f4e17504f3dac327c4e6",
"check": "external-function",
"impact": "Optimization",
@ -133,6 +134,7 @@
],
"description": "funcNotCalled2() should be declared external:\n\t- ContractWithFunctionNotCalled.funcNotCalled2() (tests/detectors/external-function/0.4.25/external_function.sol#17-19)\n",
"markdown": "funcNotCalled2() should be declared external:\n\t- [ContractWithFunctionNotCalled.funcNotCalled2()](tests/detectors/external-function/0.4.25/external_function.sol#L17-L19)\n",
"first_markdown_element": "tests/detectors/external-function/0.4.25/external_function.sol#L17-L19",
"id": "1ef1f19a92a8ab8d27df156d50dd75628ec3057b5f5eb16b7d1faa0e5c3850a0",
"check": "external-function",
"impact": "Optimization",
@ -202,6 +204,7 @@
],
"description": "funcNotCalled() should be declared external:\n\t- ContractWithFunctionNotCalled.funcNotCalled() (tests/detectors/external-function/0.4.25/external_function.sol#21-23)\n",
"markdown": "funcNotCalled() should be declared external:\n\t- [ContractWithFunctionNotCalled.funcNotCalled()](tests/detectors/external-function/0.4.25/external_function.sol#L21-L23)\n",
"first_markdown_element": "tests/detectors/external-function/0.4.25/external_function.sol#L21-L23",
"id": "369a2f3d071735755ff4f5bc43081fe858bbfb07eed94e5c6dda3c8daa22ba26",
"check": "external-function",
"impact": "Optimization",
@ -267,6 +270,7 @@
],
"description": "funcNotCalled() should be declared external:\n\t- ContractWithFunctionNotCalled2.funcNotCalled() (tests/detectors/external-function/0.4.25/external_function.sol#32-39)\n",
"markdown": "funcNotCalled() should be declared external:\n\t- [ContractWithFunctionNotCalled2.funcNotCalled()](tests/detectors/external-function/0.4.25/external_function.sol#L32-L39)\n",
"first_markdown_element": "tests/detectors/external-function/0.4.25/external_function.sol#L32-L39",
"id": "80a0a3a3954cc6e314079a1d8d96d6739d521ddbcf738e63078d7f210e443562",
"check": "external-function",
"impact": "Optimization",
@ -328,6 +332,7 @@
],
"description": "parameter_read_ok_for_external(uint256) should be declared external:\n\t- FunctionParameterWrite.parameter_read_ok_for_external(uint256) (tests/detectors/external-function/0.4.25/external_function.sol#74-76)\n",
"markdown": "parameter_read_ok_for_external(uint256) should be declared external:\n\t- [FunctionParameterWrite.parameter_read_ok_for_external(uint256)](tests/detectors/external-function/0.4.25/external_function.sol#L74-L76)\n",
"first_markdown_element": "tests/detectors/external-function/0.4.25/external_function.sol#L74-L76",
"id": "3a0a42d128eff9fb04d8f7605bf2d6f7574c2cbbdffa2dcabbae66d7568ecc59",
"check": "external-function",
"impact": "Optimization",

@ -64,6 +64,7 @@
],
"description": "funcNotCalled3() should be declared external:\n\t- ContractWithFunctionNotCalled.funcNotCalled3() (tests/detectors/external-function/0.5.16/external_function.sol#13-15)\n",
"markdown": "funcNotCalled3() should be declared external:\n\t- [ContractWithFunctionNotCalled.funcNotCalled3()](tests/detectors/external-function/0.5.16/external_function.sol#L13-L15)\n",
"first_markdown_element": "tests/detectors/external-function/0.5.16/external_function.sol#L13-L15",
"id": "026d9a579ea0304e58c8a5174296494f4b672e4ea032f4e17504f3dac327c4e6",
"check": "external-function",
"impact": "Optimization",
@ -133,6 +134,7 @@
],
"description": "funcNotCalled2() should be declared external:\n\t- ContractWithFunctionNotCalled.funcNotCalled2() (tests/detectors/external-function/0.5.16/external_function.sol#17-19)\n",
"markdown": "funcNotCalled2() should be declared external:\n\t- [ContractWithFunctionNotCalled.funcNotCalled2()](tests/detectors/external-function/0.5.16/external_function.sol#L17-L19)\n",
"first_markdown_element": "tests/detectors/external-function/0.5.16/external_function.sol#L17-L19",
"id": "1ef1f19a92a8ab8d27df156d50dd75628ec3057b5f5eb16b7d1faa0e5c3850a0",
"check": "external-function",
"impact": "Optimization",
@ -202,6 +204,7 @@
],
"description": "funcNotCalled() should be declared external:\n\t- ContractWithFunctionNotCalled.funcNotCalled() (tests/detectors/external-function/0.5.16/external_function.sol#21-23)\n",
"markdown": "funcNotCalled() should be declared external:\n\t- [ContractWithFunctionNotCalled.funcNotCalled()](tests/detectors/external-function/0.5.16/external_function.sol#L21-L23)\n",
"first_markdown_element": "tests/detectors/external-function/0.5.16/external_function.sol#L21-L23",
"id": "369a2f3d071735755ff4f5bc43081fe858bbfb07eed94e5c6dda3c8daa22ba26",
"check": "external-function",
"impact": "Optimization",
@ -267,6 +270,7 @@
],
"description": "funcNotCalled() should be declared external:\n\t- ContractWithFunctionNotCalled2.funcNotCalled() (tests/detectors/external-function/0.5.16/external_function.sol#32-39)\n",
"markdown": "funcNotCalled() should be declared external:\n\t- [ContractWithFunctionNotCalled2.funcNotCalled()](tests/detectors/external-function/0.5.16/external_function.sol#L32-L39)\n",
"first_markdown_element": "tests/detectors/external-function/0.5.16/external_function.sol#L32-L39",
"id": "80a0a3a3954cc6e314079a1d8d96d6739d521ddbcf738e63078d7f210e443562",
"check": "external-function",
"impact": "Optimization",
@ -328,6 +332,7 @@
],
"description": "parameter_read_ok_for_external(uint256) should be declared external:\n\t- FunctionParameterWrite.parameter_read_ok_for_external(uint256) (tests/detectors/external-function/0.5.16/external_function.sol#74-76)\n",
"markdown": "parameter_read_ok_for_external(uint256) should be declared external:\n\t- [FunctionParameterWrite.parameter_read_ok_for_external(uint256)](tests/detectors/external-function/0.5.16/external_function.sol#L74-L76)\n",
"first_markdown_element": "tests/detectors/external-function/0.5.16/external_function.sol#L74-L76",
"id": "3a0a42d128eff9fb04d8f7605bf2d6f7574c2cbbdffa2dcabbae66d7568ecc59",
"check": "external-function",
"impact": "Optimization",

@ -64,6 +64,7 @@
],
"description": "funcNotCalled3() should be declared external:\n\t- ContractWithFunctionNotCalled.funcNotCalled3() (tests/detectors/external-function/0.6.11/external_function.sol#13-15)\n",
"markdown": "funcNotCalled3() should be declared external:\n\t- [ContractWithFunctionNotCalled.funcNotCalled3()](tests/detectors/external-function/0.6.11/external_function.sol#L13-L15)\n",
"first_markdown_element": "tests/detectors/external-function/0.6.11/external_function.sol#L13-L15",
"id": "026d9a579ea0304e58c8a5174296494f4b672e4ea032f4e17504f3dac327c4e6",
"check": "external-function",
"impact": "Optimization",
@ -133,6 +134,7 @@
],
"description": "funcNotCalled2() should be declared external:\n\t- ContractWithFunctionNotCalled.funcNotCalled2() (tests/detectors/external-function/0.6.11/external_function.sol#17-19)\n",
"markdown": "funcNotCalled2() should be declared external:\n\t- [ContractWithFunctionNotCalled.funcNotCalled2()](tests/detectors/external-function/0.6.11/external_function.sol#L17-L19)\n",
"first_markdown_element": "tests/detectors/external-function/0.6.11/external_function.sol#L17-L19",
"id": "1ef1f19a92a8ab8d27df156d50dd75628ec3057b5f5eb16b7d1faa0e5c3850a0",
"check": "external-function",
"impact": "Optimization",
@ -202,6 +204,7 @@
],
"description": "funcNotCalled() should be declared external:\n\t- ContractWithFunctionNotCalled.funcNotCalled() (tests/detectors/external-function/0.6.11/external_function.sol#21-23)\n",
"markdown": "funcNotCalled() should be declared external:\n\t- [ContractWithFunctionNotCalled.funcNotCalled()](tests/detectors/external-function/0.6.11/external_function.sol#L21-L23)\n",
"first_markdown_element": "tests/detectors/external-function/0.6.11/external_function.sol#L21-L23",
"id": "369a2f3d071735755ff4f5bc43081fe858bbfb07eed94e5c6dda3c8daa22ba26",
"check": "external-function",
"impact": "Optimization",
@ -267,6 +270,7 @@
],
"description": "funcNotCalled() should be declared external:\n\t- ContractWithFunctionNotCalled2.funcNotCalled() (tests/detectors/external-function/0.6.11/external_function.sol#32-39)\n",
"markdown": "funcNotCalled() should be declared external:\n\t- [ContractWithFunctionNotCalled2.funcNotCalled()](tests/detectors/external-function/0.6.11/external_function.sol#L32-L39)\n",
"first_markdown_element": "tests/detectors/external-function/0.6.11/external_function.sol#L32-L39",
"id": "80a0a3a3954cc6e314079a1d8d96d6739d521ddbcf738e63078d7f210e443562",
"check": "external-function",
"impact": "Optimization",
@ -328,6 +332,7 @@
],
"description": "parameter_read_ok_for_external(uint256) should be declared external:\n\t- FunctionParameterWrite.parameter_read_ok_for_external(uint256) (tests/detectors/external-function/0.6.11/external_function.sol#74-76)\n",
"markdown": "parameter_read_ok_for_external(uint256) should be declared external:\n\t- [FunctionParameterWrite.parameter_read_ok_for_external(uint256)](tests/detectors/external-function/0.6.11/external_function.sol#L74-L76)\n",
"first_markdown_element": "tests/detectors/external-function/0.6.11/external_function.sol#L74-L76",
"id": "3a0a42d128eff9fb04d8f7605bf2d6f7574c2cbbdffa2dcabbae66d7568ecc59",
"check": "external-function",
"impact": "Optimization",

@ -64,6 +64,7 @@
],
"description": "funcNotCalled3() should be declared external:\n\t- ContractWithFunctionNotCalled.funcNotCalled3() (tests/detectors/external-function/0.7.6/external_function.sol#13-15)\n",
"markdown": "funcNotCalled3() should be declared external:\n\t- [ContractWithFunctionNotCalled.funcNotCalled3()](tests/detectors/external-function/0.7.6/external_function.sol#L13-L15)\n",
"first_markdown_element": "tests/detectors/external-function/0.7.6/external_function.sol#L13-L15",
"id": "026d9a579ea0304e58c8a5174296494f4b672e4ea032f4e17504f3dac327c4e6",
"check": "external-function",
"impact": "Optimization",
@ -133,6 +134,7 @@
],
"description": "funcNotCalled2() should be declared external:\n\t- ContractWithFunctionNotCalled.funcNotCalled2() (tests/detectors/external-function/0.7.6/external_function.sol#17-19)\n",
"markdown": "funcNotCalled2() should be declared external:\n\t- [ContractWithFunctionNotCalled.funcNotCalled2()](tests/detectors/external-function/0.7.6/external_function.sol#L17-L19)\n",
"first_markdown_element": "tests/detectors/external-function/0.7.6/external_function.sol#L17-L19",
"id": "1ef1f19a92a8ab8d27df156d50dd75628ec3057b5f5eb16b7d1faa0e5c3850a0",
"check": "external-function",
"impact": "Optimization",
@ -202,6 +204,7 @@
],
"description": "funcNotCalled() should be declared external:\n\t- ContractWithFunctionNotCalled.funcNotCalled() (tests/detectors/external-function/0.7.6/external_function.sol#21-23)\n",
"markdown": "funcNotCalled() should be declared external:\n\t- [ContractWithFunctionNotCalled.funcNotCalled()](tests/detectors/external-function/0.7.6/external_function.sol#L21-L23)\n",
"first_markdown_element": "tests/detectors/external-function/0.7.6/external_function.sol#L21-L23",
"id": "369a2f3d071735755ff4f5bc43081fe858bbfb07eed94e5c6dda3c8daa22ba26",
"check": "external-function",
"impact": "Optimization",
@ -267,6 +270,7 @@
],
"description": "funcNotCalled() should be declared external:\n\t- ContractWithFunctionNotCalled2.funcNotCalled() (tests/detectors/external-function/0.7.6/external_function.sol#32-39)\n",
"markdown": "funcNotCalled() should be declared external:\n\t- [ContractWithFunctionNotCalled2.funcNotCalled()](tests/detectors/external-function/0.7.6/external_function.sol#L32-L39)\n",
"first_markdown_element": "tests/detectors/external-function/0.7.6/external_function.sol#L32-L39",
"id": "80a0a3a3954cc6e314079a1d8d96d6739d521ddbcf738e63078d7f210e443562",
"check": "external-function",
"impact": "Optimization",
@ -328,6 +332,7 @@
],
"description": "parameter_read_ok_for_external(uint256) should be declared external:\n\t- FunctionParameterWrite.parameter_read_ok_for_external(uint256) (tests/detectors/external-function/0.7.6/external_function.sol#74-76)\n",
"markdown": "parameter_read_ok_for_external(uint256) should be declared external:\n\t- [FunctionParameterWrite.parameter_read_ok_for_external(uint256)](tests/detectors/external-function/0.7.6/external_function.sol#L74-L76)\n",
"first_markdown_element": "tests/detectors/external-function/0.7.6/external_function.sol#L74-L76",
"id": "3a0a42d128eff9fb04d8f7605bf2d6f7574c2cbbdffa2dcabbae66d7568ecc59",
"check": "external-function",
"impact": "Optimization",

@ -87,6 +87,7 @@
],
"description": "StateVarInitFromFunction.v (tests/detectors/function-init-state/0.4.25/function_init_state_variables.sol#5) is set pre-construction with a non-constant function or state variable:\n\t- set()\n",
"markdown": "[StateVarInitFromFunction.v](tests/detectors/function-init-state/0.4.25/function_init_state_variables.sol#L5) is set pre-construction with a non-constant function or state variable:\n\t- set()\n",
"first_markdown_element": "tests/detectors/function-init-state/0.4.25/function_init_state_variables.sol#L5",
"id": "4b87ea4c0a3b72be79ffde12c56c9dc7440445b79ff4b228e0937b3a05540e4b",
"check": "function-init-state",
"impact": "Informational",
@ -179,6 +180,7 @@
],
"description": "StateVarInitFromFunction.x (tests/detectors/function-init-state/0.4.25/function_init_state_variables.sol#7) is set pre-construction with a non-constant function or state variable:\n\t- set()\n",
"markdown": "[StateVarInitFromFunction.x](tests/detectors/function-init-state/0.4.25/function_init_state_variables.sol#L7) is set pre-construction with a non-constant function or state variable:\n\t- set()\n",
"first_markdown_element": "tests/detectors/function-init-state/0.4.25/function_init_state_variables.sol#L7",
"id": "adfa394934c8669a556cfa10c364fe526dd1e295a63959e1e88fe84a919ef354",
"check": "function-init-state",
"impact": "Informational",
@ -271,6 +273,7 @@
],
"description": "StateVarInitFromFunction.y1 (tests/detectors/function-init-state/0.4.25/function_init_state_variables.sol#9) is set pre-construction with a non-constant function or state variable:\n\t- 5 + get()\n",
"markdown": "[StateVarInitFromFunction.y1](tests/detectors/function-init-state/0.4.25/function_init_state_variables.sol#L9) is set pre-construction with a non-constant function or state variable:\n\t- 5 + get()\n",
"first_markdown_element": "tests/detectors/function-init-state/0.4.25/function_init_state_variables.sol#L9",
"id": "b26f83c06e9aca87637dea02a0f4080fd4226c1ed90c6c2c63da85cb142d67ab",
"check": "function-init-state",
"impact": "Informational",
@ -363,6 +366,7 @@
],
"description": "StateVarInitFromFunction.y2 (tests/detectors/function-init-state/0.4.25/function_init_state_variables.sol#10) is set pre-construction with a non-constant function or state variable:\n\t- (10 + (5 + get()))\n",
"markdown": "[StateVarInitFromFunction.y2](tests/detectors/function-init-state/0.4.25/function_init_state_variables.sol#L10) is set pre-construction with a non-constant function or state variable:\n\t- (10 + (5 + get()))\n",
"first_markdown_element": "tests/detectors/function-init-state/0.4.25/function_init_state_variables.sol#L10",
"id": "b6e231b9b735794e00b73dddb86b2ba8f7a738d916c99f302fb32b1095c67472",
"check": "function-init-state",
"impact": "Informational",
@ -455,6 +459,7 @@
],
"description": "StateVarInitFromFunction.z4 (tests/detectors/function-init-state/0.4.25/function_init_state_variables.sol#17) is set pre-construction with a non-constant function or state variable:\n\t- z3 + 5\n",
"markdown": "[StateVarInitFromFunction.z4](tests/detectors/function-init-state/0.4.25/function_init_state_variables.sol#L17) is set pre-construction with a non-constant function or state variable:\n\t- z3 + 5\n",
"first_markdown_element": "tests/detectors/function-init-state/0.4.25/function_init_state_variables.sol#L17",
"id": "8b7eb9ab16397c2f23479d2c3043a675ab5e2b1da07e2697631812d6d7b68525",
"check": "function-init-state",
"impact": "Informational",

@ -87,6 +87,7 @@
],
"description": "StateVarInitFromFunction.v (tests/detectors/function-init-state/0.5.16/function_init_state_variables.sol#5) is set pre-construction with a non-constant function or state variable:\n\t- set()\n",
"markdown": "[StateVarInitFromFunction.v](tests/detectors/function-init-state/0.5.16/function_init_state_variables.sol#L5) is set pre-construction with a non-constant function or state variable:\n\t- set()\n",
"first_markdown_element": "tests/detectors/function-init-state/0.5.16/function_init_state_variables.sol#L5",
"id": "4b87ea4c0a3b72be79ffde12c56c9dc7440445b79ff4b228e0937b3a05540e4b",
"check": "function-init-state",
"impact": "Informational",
@ -179,6 +180,7 @@
],
"description": "StateVarInitFromFunction.x (tests/detectors/function-init-state/0.5.16/function_init_state_variables.sol#7) is set pre-construction with a non-constant function or state variable:\n\t- set()\n",
"markdown": "[StateVarInitFromFunction.x](tests/detectors/function-init-state/0.5.16/function_init_state_variables.sol#L7) is set pre-construction with a non-constant function or state variable:\n\t- set()\n",
"first_markdown_element": "tests/detectors/function-init-state/0.5.16/function_init_state_variables.sol#L7",
"id": "adfa394934c8669a556cfa10c364fe526dd1e295a63959e1e88fe84a919ef354",
"check": "function-init-state",
"impact": "Informational",
@ -271,6 +273,7 @@
],
"description": "StateVarInitFromFunction.y1 (tests/detectors/function-init-state/0.5.16/function_init_state_variables.sol#9) is set pre-construction with a non-constant function or state variable:\n\t- 5 + get()\n",
"markdown": "[StateVarInitFromFunction.y1](tests/detectors/function-init-state/0.5.16/function_init_state_variables.sol#L9) is set pre-construction with a non-constant function or state variable:\n\t- 5 + get()\n",
"first_markdown_element": "tests/detectors/function-init-state/0.5.16/function_init_state_variables.sol#L9",
"id": "b26f83c06e9aca87637dea02a0f4080fd4226c1ed90c6c2c63da85cb142d67ab",
"check": "function-init-state",
"impact": "Informational",
@ -363,6 +366,7 @@
],
"description": "StateVarInitFromFunction.y2 (tests/detectors/function-init-state/0.5.16/function_init_state_variables.sol#10) is set pre-construction with a non-constant function or state variable:\n\t- (10 + (5 + get()))\n",
"markdown": "[StateVarInitFromFunction.y2](tests/detectors/function-init-state/0.5.16/function_init_state_variables.sol#L10) is set pre-construction with a non-constant function or state variable:\n\t- (10 + (5 + get()))\n",
"first_markdown_element": "tests/detectors/function-init-state/0.5.16/function_init_state_variables.sol#L10",
"id": "b6e231b9b735794e00b73dddb86b2ba8f7a738d916c99f302fb32b1095c67472",
"check": "function-init-state",
"impact": "Informational",
@ -455,6 +459,7 @@
],
"description": "StateVarInitFromFunction.z4 (tests/detectors/function-init-state/0.5.16/function_init_state_variables.sol#17) is set pre-construction with a non-constant function or state variable:\n\t- z3 + 5\n",
"markdown": "[StateVarInitFromFunction.z4](tests/detectors/function-init-state/0.5.16/function_init_state_variables.sol#L17) is set pre-construction with a non-constant function or state variable:\n\t- z3 + 5\n",
"first_markdown_element": "tests/detectors/function-init-state/0.5.16/function_init_state_variables.sol#L17",
"id": "8b7eb9ab16397c2f23479d2c3043a675ab5e2b1da07e2697631812d6d7b68525",
"check": "function-init-state",
"impact": "Informational",

@ -87,6 +87,7 @@
],
"description": "StateVarInitFromFunction.v (tests/detectors/function-init-state/0.6.11/function_init_state_variables.sol#5) is set pre-construction with a non-constant function or state variable:\n\t- set()\n",
"markdown": "[StateVarInitFromFunction.v](tests/detectors/function-init-state/0.6.11/function_init_state_variables.sol#L5) is set pre-construction with a non-constant function or state variable:\n\t- set()\n",
"first_markdown_element": "tests/detectors/function-init-state/0.6.11/function_init_state_variables.sol#L5",
"id": "4b87ea4c0a3b72be79ffde12c56c9dc7440445b79ff4b228e0937b3a05540e4b",
"check": "function-init-state",
"impact": "Informational",
@ -179,6 +180,7 @@
],
"description": "StateVarInitFromFunction.x (tests/detectors/function-init-state/0.6.11/function_init_state_variables.sol#7) is set pre-construction with a non-constant function or state variable:\n\t- set()\n",
"markdown": "[StateVarInitFromFunction.x](tests/detectors/function-init-state/0.6.11/function_init_state_variables.sol#L7) is set pre-construction with a non-constant function or state variable:\n\t- set()\n",
"first_markdown_element": "tests/detectors/function-init-state/0.6.11/function_init_state_variables.sol#L7",
"id": "adfa394934c8669a556cfa10c364fe526dd1e295a63959e1e88fe84a919ef354",
"check": "function-init-state",
"impact": "Informational",
@ -271,6 +273,7 @@
],
"description": "StateVarInitFromFunction.y1 (tests/detectors/function-init-state/0.6.11/function_init_state_variables.sol#9) is set pre-construction with a non-constant function or state variable:\n\t- 5 + get()\n",
"markdown": "[StateVarInitFromFunction.y1](tests/detectors/function-init-state/0.6.11/function_init_state_variables.sol#L9) is set pre-construction with a non-constant function or state variable:\n\t- 5 + get()\n",
"first_markdown_element": "tests/detectors/function-init-state/0.6.11/function_init_state_variables.sol#L9",
"id": "b26f83c06e9aca87637dea02a0f4080fd4226c1ed90c6c2c63da85cb142d67ab",
"check": "function-init-state",
"impact": "Informational",
@ -363,6 +366,7 @@
],
"description": "StateVarInitFromFunction.y2 (tests/detectors/function-init-state/0.6.11/function_init_state_variables.sol#10) is set pre-construction with a non-constant function or state variable:\n\t- (10 + (5 + get()))\n",
"markdown": "[StateVarInitFromFunction.y2](tests/detectors/function-init-state/0.6.11/function_init_state_variables.sol#L10) is set pre-construction with a non-constant function or state variable:\n\t- (10 + (5 + get()))\n",
"first_markdown_element": "tests/detectors/function-init-state/0.6.11/function_init_state_variables.sol#L10",
"id": "b6e231b9b735794e00b73dddb86b2ba8f7a738d916c99f302fb32b1095c67472",
"check": "function-init-state",
"impact": "Informational",
@ -455,6 +459,7 @@
],
"description": "StateVarInitFromFunction.z4 (tests/detectors/function-init-state/0.6.11/function_init_state_variables.sol#17) is set pre-construction with a non-constant function or state variable:\n\t- z3 + 5\n",
"markdown": "[StateVarInitFromFunction.z4](tests/detectors/function-init-state/0.6.11/function_init_state_variables.sol#L17) is set pre-construction with a non-constant function or state variable:\n\t- z3 + 5\n",
"first_markdown_element": "tests/detectors/function-init-state/0.6.11/function_init_state_variables.sol#L17",
"id": "8b7eb9ab16397c2f23479d2c3043a675ab5e2b1da07e2697631812d6d7b68525",
"check": "function-init-state",
"impact": "Informational",

@ -87,6 +87,7 @@
],
"description": "StateVarInitFromFunction.v (tests/detectors/function-init-state/0.7.6/function_init_state_variables.sol#5) is set pre-construction with a non-constant function or state variable:\n\t- set()\n",
"markdown": "[StateVarInitFromFunction.v](tests/detectors/function-init-state/0.7.6/function_init_state_variables.sol#L5) is set pre-construction with a non-constant function or state variable:\n\t- set()\n",
"first_markdown_element": "tests/detectors/function-init-state/0.7.6/function_init_state_variables.sol#L5",
"id": "4b87ea4c0a3b72be79ffde12c56c9dc7440445b79ff4b228e0937b3a05540e4b",
"check": "function-init-state",
"impact": "Informational",
@ -179,6 +180,7 @@
],
"description": "StateVarInitFromFunction.x (tests/detectors/function-init-state/0.7.6/function_init_state_variables.sol#7) is set pre-construction with a non-constant function or state variable:\n\t- set()\n",
"markdown": "[StateVarInitFromFunction.x](tests/detectors/function-init-state/0.7.6/function_init_state_variables.sol#L7) is set pre-construction with a non-constant function or state variable:\n\t- set()\n",
"first_markdown_element": "tests/detectors/function-init-state/0.7.6/function_init_state_variables.sol#L7",
"id": "adfa394934c8669a556cfa10c364fe526dd1e295a63959e1e88fe84a919ef354",
"check": "function-init-state",
"impact": "Informational",
@ -271,6 +273,7 @@
],
"description": "StateVarInitFromFunction.y1 (tests/detectors/function-init-state/0.7.6/function_init_state_variables.sol#9) is set pre-construction with a non-constant function or state variable:\n\t- 5 + get()\n",
"markdown": "[StateVarInitFromFunction.y1](tests/detectors/function-init-state/0.7.6/function_init_state_variables.sol#L9) is set pre-construction with a non-constant function or state variable:\n\t- 5 + get()\n",
"first_markdown_element": "tests/detectors/function-init-state/0.7.6/function_init_state_variables.sol#L9",
"id": "b26f83c06e9aca87637dea02a0f4080fd4226c1ed90c6c2c63da85cb142d67ab",
"check": "function-init-state",
"impact": "Informational",
@ -363,6 +366,7 @@
],
"description": "StateVarInitFromFunction.y2 (tests/detectors/function-init-state/0.7.6/function_init_state_variables.sol#10) is set pre-construction with a non-constant function or state variable:\n\t- (10 + (5 + get()))\n",
"markdown": "[StateVarInitFromFunction.y2](tests/detectors/function-init-state/0.7.6/function_init_state_variables.sol#L10) is set pre-construction with a non-constant function or state variable:\n\t- (10 + (5 + get()))\n",
"first_markdown_element": "tests/detectors/function-init-state/0.7.6/function_init_state_variables.sol#L10",
"id": "b6e231b9b735794e00b73dddb86b2ba8f7a738d916c99f302fb32b1095c67472",
"check": "function-init-state",
"impact": "Informational",
@ -455,6 +459,7 @@
],
"description": "StateVarInitFromFunction.z4 (tests/detectors/function-init-state/0.7.6/function_init_state_variables.sol#17) is set pre-construction with a non-constant function or state variable:\n\t- z3 + 5\n",
"markdown": "[StateVarInitFromFunction.z4](tests/detectors/function-init-state/0.7.6/function_init_state_variables.sol#L17) is set pre-construction with a non-constant function or state variable:\n\t- z3 + 5\n",
"first_markdown_element": "tests/detectors/function-init-state/0.7.6/function_init_state_variables.sol#L17",
"id": "8b7eb9ab16397c2f23479d2c3043a675ab5e2b1da07e2697631812d6d7b68525",
"check": "function-init-state",
"impact": "Informational",

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save