Merge branch 'develop' into hzzhang/misc-cleanup-and-fix

pull/644/head
JoranHonig 6 years ago committed by GitHub
commit 9558d80c11
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 8
      .circleci/config.yml
  2. 6
      mythril/analysis/modules/delegatecall.py
  3. 9
      mythril/analysis/modules/dependence_on_predictable_vars.py
  4. 3
      mythril/analysis/modules/deprecated_ops.py
  5. 9
      mythril/analysis/modules/ether_send.py
  6. 9
      mythril/analysis/modules/exceptions.py
  7. 9
      mythril/analysis/modules/external_calls.py
  8. 39
      mythril/analysis/modules/integer.py
  9. 3
      mythril/analysis/modules/multiple_sends.py
  10. 16
      mythril/analysis/modules/suicide.py
  11. 3
      mythril/analysis/modules/transaction_order_dependence.py
  12. 6
      mythril/analysis/modules/unchecked_retval.py
  13. 33
      mythril/analysis/report.py
  14. 31
      mythril/analysis/solver.py
  15. 107
      mythril/disassembler/asm.py
  16. 5
      mythril/disassembler/disassembly.py
  17. 151
      mythril/ether/asm.py
  18. 2
      mythril/interfaces/cli.py
  19. 2
      mythril/version.py
  20. 1
      requirements.txt
  21. 2
      solidity_examples/rubixi.sol
  22. 19
      tests/analysis/test_delegatecall.py
  23. 124
      tests/disassembler/asm.py
  24. 52
      tests/laser/evm_testsuite/VMTests/vmSha3Test/sha3_0.json
  25. 52
      tests/laser/evm_testsuite/VMTests/vmSha3Test/sha3_1.json
  26. 52
      tests/laser/evm_testsuite/VMTests/vmSha3Test/sha3_2.json
  27. 37
      tests/laser/evm_testsuite/VMTests/vmSha3Test/sha3_3.json
  28. 37
      tests/laser/evm_testsuite/VMTests/vmSha3Test/sha3_4.json
  29. 37
      tests/laser/evm_testsuite/VMTests/vmSha3Test/sha3_5.json
  30. 37
      tests/laser/evm_testsuite/VMTests/vmSha3Test/sha3_6.json
  31. 37
      tests/laser/evm_testsuite/VMTests/vmSha3Test/sha3_bigOffset.json
  32. 52
      tests/laser/evm_testsuite/VMTests/vmSha3Test/sha3_bigOffset2.json
  33. 37
      tests/laser/evm_testsuite/VMTests/vmSha3Test/sha3_bigSize.json
  34. 52
      tests/laser/evm_testsuite/VMTests/vmSha3Test/sha3_memSizeNoQuadraticCost31.json
  35. 52
      tests/laser/evm_testsuite/VMTests/vmSha3Test/sha3_memSizeQuadraticCost32.json
  36. 52
      tests/laser/evm_testsuite/VMTests/vmSha3Test/sha3_memSizeQuadraticCost32_zeroSize.json
  37. 52
      tests/laser/evm_testsuite/VMTests/vmSha3Test/sha3_memSizeQuadraticCost33.json
  38. 52
      tests/laser/evm_testsuite/VMTests/vmSha3Test/sha3_memSizeQuadraticCost63.json
  39. 52
      tests/laser/evm_testsuite/VMTests/vmSha3Test/sha3_memSizeQuadraticCost64.json
  40. 52
      tests/laser/evm_testsuite/VMTests/vmSha3Test/sha3_memSizeQuadraticCost64_2.json
  41. 52
      tests/laser/evm_testsuite/VMTests/vmSha3Test/sha3_memSizeQuadraticCost65.json
  42. 10
      tests/laser/evm_testsuite/evm_test.py
  43. 2
      tests/testdata/outputs_expected/calls.sol.o.graph.html
  44. 2
      tests/testdata/outputs_expected/environments.sol.o.graph.html
  45. 2
      tests/testdata/outputs_expected/environments.sol.o.json
  46. 9
      tests/testdata/outputs_expected/environments.sol.o.markdown
  47. 12
      tests/testdata/outputs_expected/environments.sol.o.text
  48. 2
      tests/testdata/outputs_expected/ether_send.sol.o.graph.html
  49. 2
      tests/testdata/outputs_expected/ether_send.sol.o.json
  50. 2
      tests/testdata/outputs_expected/exceptions.sol.o.graph.html
  51. 2
      tests/testdata/outputs_expected/kinds_of_calls.sol.o.graph.html
  52. 2
      tests/testdata/outputs_expected/metacoin.sol.o.graph.html
  53. 2
      tests/testdata/outputs_expected/multi_contracts.sol.o.graph.html
  54. 2
      tests/testdata/outputs_expected/multi_contracts.sol.o.json
  55. 2
      tests/testdata/outputs_expected/nonascii.sol.o.graph.html
  56. 2
      tests/testdata/outputs_expected/origin.sol.o.graph.html
  57. 400
      tests/testdata/outputs_expected/outputs_current/calls.sol.o.easm
  58. 62
      tests/testdata/outputs_expected/outputs_current/calls.sol.o.graph.html
  59. 1
      tests/testdata/outputs_expected/outputs_current/calls.sol.o.json
  60. 111
      tests/testdata/outputs_expected/outputs_current/calls.sol.o.markdown
  61. 90
      tests/testdata/outputs_expected/outputs_current/calls.sol.o.text
  62. 259
      tests/testdata/outputs_expected/outputs_current/environments.sol.o.easm
  63. 62
      tests/testdata/outputs_expected/outputs_current/environments.sol.o.graph.html
  64. 420
      tests/testdata/outputs_expected/outputs_current/ether_send.sol.o.easm
  65. 62
      tests/testdata/outputs_expected/outputs_current/ether_send.sol.o.graph.html
  66. 1
      tests/testdata/outputs_expected/outputs_current/ether_send.sol.o.json
  67. 23
      tests/testdata/outputs_expected/outputs_current/ether_send.sol.o.markdown
  68. 19
      tests/testdata/outputs_expected/outputs_current/ether_send.sol.o.text
  69. 392
      tests/testdata/outputs_expected/outputs_current/exceptions.sol.o.easm
  70. 62
      tests/testdata/outputs_expected/outputs_current/exceptions.sol.o.graph.html
  71. 1
      tests/testdata/outputs_expected/outputs_current/exceptions.sol.o.json
  72. 45
      tests/testdata/outputs_expected/outputs_current/exceptions.sol.o.markdown
  73. 36
      tests/testdata/outputs_expected/outputs_current/exceptions.sol.o.text
  74. 435
      tests/testdata/outputs_expected/outputs_current/kinds_of_calls.sol.o.easm
  75. 62
      tests/testdata/outputs_expected/outputs_current/kinds_of_calls.sol.o.graph.html
  76. 1
      tests/testdata/outputs_expected/outputs_current/kinds_of_calls.sol.o.json
  77. 45
      tests/testdata/outputs_expected/outputs_current/kinds_of_calls.sol.o.markdown
  78. 36
      tests/testdata/outputs_expected/outputs_current/kinds_of_calls.sol.o.text
  79. 253
      tests/testdata/outputs_expected/outputs_current/metacoin.sol.o.easm
  80. 62
      tests/testdata/outputs_expected/outputs_current/metacoin.sol.o.graph.html
  81. 1
      tests/testdata/outputs_expected/outputs_current/metacoin.sol.o.json
  82. 3
      tests/testdata/outputs_expected/outputs_current/metacoin.sol.o.markdown
  83. 1
      tests/testdata/outputs_expected/outputs_current/metacoin.sol.o.text
  84. 77
      tests/testdata/outputs_expected/outputs_current/multi_contracts.sol.o.easm
  85. 62
      tests/testdata/outputs_expected/outputs_current/multi_contracts.sol.o.graph.html
  86. 1
      tests/testdata/outputs_expected/outputs_current/multi_contracts.sol.o.json
  87. 12
      tests/testdata/outputs_expected/outputs_current/multi_contracts.sol.o.markdown
  88. 9
      tests/testdata/outputs_expected/outputs_current/multi_contracts.sol.o.text
  89. 167
      tests/testdata/outputs_expected/outputs_current/nonascii.sol.o.easm
  90. 62
      tests/testdata/outputs_expected/outputs_current/nonascii.sol.o.graph.html
  91. 1
      tests/testdata/outputs_expected/outputs_current/nonascii.sol.o.json
  92. 3
      tests/testdata/outputs_expected/outputs_current/nonascii.sol.o.markdown
  93. 1
      tests/testdata/outputs_expected/outputs_current/nonascii.sol.o.text
  94. 168
      tests/testdata/outputs_expected/outputs_current/origin.sol.o.easm
  95. 62
      tests/testdata/outputs_expected/outputs_current/origin.sol.o.graph.html
  96. 1
      tests/testdata/outputs_expected/outputs_current/origin.sol.o.json
  97. 13
      tests/testdata/outputs_expected/outputs_current/origin.sol.o.markdown
  98. 10
      tests/testdata/outputs_expected/outputs_current/origin.sol.o.text
  99. 388
      tests/testdata/outputs_expected/outputs_current/overflow.sol.o.easm
  100. 62
      tests/testdata/outputs_expected/outputs_current/overflow.sol.o.graph.html
  101. Some files were not shown because too many files have changed in this diff Show More

@ -67,10 +67,10 @@ jobs:
name: Sonar analysis
command: if [ -z "$CIRCLE_PR_NUMBER" ]; then if [ -z "$CIRCLE_TAG" ]; then sonar-scanner -Dsonar.projectKey=$SONAR_PROJECT_KEY -Dsonar.organization=$SONAR_ORGANIZATION -Dsonar.branch.name=$CIRCLE_BRANCH -Dsonar.projectBaseDir=/home/mythril -Dsonar.sources=mythril -Dsonar.host.url=$SONAR_HOST_URL -Dsonar.tests=/home/mythril/tests -Dsonar.login=$SONAR_LOGIN; fi; fi
- run:
name: Integration tests
command: if [ -z "$CIRCLE_PR_NUMBER" ]; then ./run-integration-tests.sh; fi
working_directory: /home
# - run:
# name: Integration tests
# command: if [ -z "$CIRCLE_PR_NUMBER" ]; then ./run-integration-tests.sh; fi
# working_directory: /home
pypi_release:
<<: *defaults

@ -46,9 +46,10 @@ def _concrete_call(call, state, address, meminstart):
issue = Issue(
contract=call.node.contract_name,
function=call.node.function_name,
function_name=call.node.function_name,
address=address,
swc_id=DELEGATECALL_TO_UNTRUSTED_CONTRACT,
bytecode=state.environment.code.bytecode,
title="Call data forwarded with delegatecall()",
_type="Informational",
)
@ -68,9 +69,10 @@ def _concrete_call(call, state, address, meminstart):
def _symbolic_call(call, state, address, statespace):
issue = Issue(
contract=call.node.contract_name,
function=call.node.function_name,
function_name=call.node.function_name,
address=address,
swc_id=DELEGATECALL_TO_UNTRUSTED_CONTRACT,
bytecode=state.environment.code.bytecode,
title=call.type + " to a user-supplied address",
)

@ -63,9 +63,10 @@ def execute(statespace):
)
issue = Issue(
contract=call.node.contract_name,
function=call.node.function_name,
function_name=call.node.function_name,
address=address,
swc_id=swc_type,
bytecode=state.environment.code.bytecode,
title="Dependence on predictable environment variable",
_type="Warning",
description=description,
@ -111,8 +112,9 @@ def execute(statespace):
issue = Issue(
contract=call.node.contract_name,
function=call.node.function_name,
function_name=call.node.function_name,
address=address,
bytecode=call.state.environment.code.bytecode,
title="Dependence on predictable variable",
_type="Warning",
description=description,
@ -140,8 +142,9 @@ def execute(statespace):
)
issue = Issue(
contract=call.node.contract_name,
function=call.node.function_name,
function_name=call.node.function_name,
address=address,
bytecode=state.environment.code.bytecode,
title="Dependence on predictable variable",
_type="Informational",
description=description,

@ -34,9 +34,10 @@ def execute(statespace):
issue = Issue(
contract=node.contract_name,
function=node.function_name,
function_name=node.function_name,
address=instruction["address"],
title="Use of tx.origin",
bytecode=state.environment.code.bytecode,
_type="Warning",
swc_id=TX_ORIGIN_USAGE,
description=description,

@ -56,15 +56,20 @@ def _analyze_state(state, node):
node.constraints + not_creator_constraints + [call_value > 0]
)
debug = "SOLVER OUTPUT:\n" + solver.pretty_print_model(model)
debug = "Transaction Sequence: " + str(
solver.get_transaction_sequence(
state, node.constraints + not_creator_constraints + [call_value > 0]
)
)
issue = Issue(
contract=node.contract_name,
function=node.function_name,
function_name=node.function_name,
address=instruction["address"],
swc_id=UNPROTECTED_ETHER_WITHDRAWAL,
title="Ether send",
_type="Warning",
bytecode=state.environment.code.bytecode,
description="It seems that an attacker is able to execute an call instruction,"
" this can mean that the attacker is able to extract funds "
"out of the contract.".format(target),

@ -40,21 +40,20 @@ def execute(statespace):
"Use `require()` for regular input checking. "
)
debug = (
"The exception is triggered under the following conditions:\n\n"
debug = "Transaction Sequence: " + str(
solver.get_transaction_sequence(state, node.constraints)
)
debug += solver.pretty_print_model(model)
issues.append(
Issue(
contract=node.contract_name,
function=node.function_name,
function_name=node.function_name,
address=address,
swc_id=ASSERT_VIOLATION,
title="Exception state",
_type="Informational",
description=description,
bytecode=state.environment.code.bytecode,
debug=debug,
)
)

@ -119,11 +119,12 @@ def execute(statespace):
issue = Issue(
contract=call.node.contract_name,
function=call.node.function_name,
function_name=call.node.function_name,
address=address,
title="Message call to external contract",
_type="Warning",
description=description,
bytecode=state.environment.code.bytecode,
swc_id=REENTRANCY,
)
@ -133,11 +134,12 @@ def execute(statespace):
issue = Issue(
contract=call.node.contract_name,
function=call.node.function_name,
function_name=call.node.function_name,
address=address,
title="Message call to external contract",
_type="Informational",
description=description,
bytecode=state.environment.code.bytecode,
swc_id=REENTRANCY,
)
@ -177,11 +179,12 @@ def execute(statespace):
issue = Issue(
contract=call.node.contract_name,
function=call.node.function_name,
function_name=call.node.function_name,
address=address,
title="State change after external call",
_type="Warning",
description=description,
bytecode=state.environment.code.bytecode,
swc_id=REENTRANCY,
)
issues.append(issue)

@ -91,15 +91,18 @@ def _check_integer_overflow(statespace, state, node):
# Build issue
issue = Issue(
contract=node.contract_name,
function=node.function_name,
function_name=node.function_name,
address=instruction["address"],
swc_id=INTEGER_OVERFLOW_AND_UNDERFLOW,
bytecode=state.environment.code.bytecode,
title="Integer Overflow",
_type="Warning",
)
issue.description = "The arithmetic operation can result in integer overflow.\n"
issue.debug = solver.pretty_print_model(model)
issue.debug = "Transaction Sequence: " + str(
solver.get_transaction_sequence(state, node.constraints)
)
issues.append(issue)
return issues
@ -195,18 +198,21 @@ def _check_integer_underflow(statespace, state, node):
issue = Issue(
contract=node.contract_name,
function=node.function_name,
function_name=node.function_name,
address=instruction["address"],
swc_id=INTEGER_OVERFLOW_AND_UNDERFLOW,
bytecode=state.environment.code.bytecode,
title="Integer Underflow",
_type="Warning",
)
issue.description = (
"The subtraction can result in an integer underflow.\n"
"The substraction can result in an integer underflow.\n"
)
issue.debug = solver.pretty_print_model(model)
issue.debug = "Transaction Sequence: " + str(
solver.get_transaction_sequence(state, node.constraints)
)
issues.append(issue)
except UnsatError:
@ -287,8 +293,6 @@ def _search_children(
element = _check_usage(current_state, taint_result)
if len(element) < 1:
continue
if _check_requires(element[0], node, statespace, constraint):
continue
results += element
# Recursively search children
@ -310,24 +314,3 @@ def _search_children(
)
return results
def _check_requires(state, node, statespace, constraint):
"""Checks if usage of overflowed statement results in a revert statement"""
instruction = state.get_current_instruction()
if instruction["opcode"] is not "JUMPI":
return False
children = [
statespace.nodes[edge.node_to]
for edge in statespace.edges
if edge.node_from == node.uid
]
for child in children:
opcodes = [s.get_current_instruction()["opcode"] for s in child.states]
if "REVERT" in opcodes or "ASSERT_FAIL" in opcodes:
return True
# I added the following case, bc of false positives if the max depth is not high enough
if len(children) == 0:
return True
return False

@ -24,9 +24,10 @@ def execute(statespace):
instruction = call.state.get_current_instruction()
issue = Issue(
contract=node.contract_name,
function=node.function_name,
function_name=node.function_name,
address=instruction["address"],
swc_id=MULTIPLE_SENDS,
bytecode=call.state.environment.code.bytecode,
title="Multiple Calls",
_type="Informational",
)

@ -9,7 +9,7 @@ import logging
"""
MODULE DESCRIPTION:
Check for SUICIDE instructions that either can be reached by anyone, or where msg.sender is checked against a tainted storage index
Check for SUICIDE instructions that either can be reached by anyone, or where msg.sender is checked against a tainted storage index
(i.e. there's a write to that index is unconstrained by msg.sender).
"""
@ -67,22 +67,18 @@ def _analyze_state(state, node):
try:
model = solver.get_model(node.constraints + not_creator_constraints)
logging.debug(
"Transaction Sequence: "
+ str(
solver.get_transaction_sequence(
state, node.constraints + not_creator_constraints
)
debug = "Transaction Sequence: " + str(
solver.get_transaction_sequence(
state, node.constraints + not_creator_constraints
)
)
debug = "SOLVER OUTPUT:\n" + solver.pretty_print_model(model)
issue = Issue(
contract=node.contract_name,
function=node.function_name,
function_name=node.function_name,
address=instruction["address"],
swc_id=UNPROTECTED_SELFDESTRUCT,
bytecode=state.environment.code.bytecode,
title="Unchecked SUICIDE",
_type="Warning",
description=description,

@ -35,9 +35,10 @@ def execute(statespace):
instruction = call.state.get_current_instruction()
issue = Issue(
contract=node.contract_name,
function=node.function_name,
function_name=node.function_name,
address=instruction["address"],
title="Transaction order dependence",
bytecode=call.state.environment.code.bytecode,
swc_id=TX_ORDER_DEPENDENCE,
_type="Warning",
)

@ -54,8 +54,9 @@ def execute(statespace):
address = state.get_current_instruction()["address"]
issue = Issue(
contract=node.contract_name,
function=node.function_name,
function_name=node.function_name,
address=address,
bytecode=state.environment.code.bytecode,
title="Unchecked CALL return value",
swc_id=UNCHECKED_RET_VAL,
)
@ -102,7 +103,8 @@ def execute(statespace):
address = instr["address"]
issue = Issue(
contract=node.contract_name,
function=node.function_name,
function_name=node.function_name,
bytecode=state.environment.code.bytecode,
address=address,
title="Unchecked CALL return value",
swc_id=UNCHECKED_RET_VAL,

@ -1,17 +1,20 @@
import hashlib
import logging
import json
import operator
from jinja2 import PackageLoader, Environment
import _pysha3 as sha3
import hashlib
class Issue:
def __init__(
self,
contract,
function,
function_name,
address,
swc_id,
title,
bytecode,
_type="Informational",
description="",
debug="",
@ -19,7 +22,7 @@ class Issue:
self.title = title
self.contract = contract
self.function = function
self.function = function_name
self.address = address
self.description = description
self.type = _type
@ -29,6 +32,16 @@ class Issue:
self.code = None
self.lineno = None
try:
keccak = sha3.keccak_256()
keccak.update(bytes.fromhex(bytecode))
self.bytecode_hash = "0x" + keccak.hexdigest()
except ValueError:
logging.debug(
"Unable to change the bytecode to bytes. Bytecode: {}".format(bytecode)
)
self.bytecode_hash = ""
@property
def as_dict(self):
@ -92,6 +105,20 @@ class Report:
result = {"success": True, "error": None, "issues": self.sorted_issues()}
return json.dumps(result, sort_keys=True)
def as_swc_standard_format(self):
""" Format defined for integration and correlation"""
result = {
"issues": [
{
"swc-id": "SWC-{}".format(issue.swc_id),
"bytecodeOffset": issue.address,
"codeHash": issue.bytecode_hash,
}
for issue in self.issues.values()
]
}
return json.dumps(result, sort_keys=True)
def as_markdown(self):
filename = self._file_name()
template = Report.environment.get_template("report_as_markdown.jinja2")

@ -1,4 +1,4 @@
from z3 import Solver, simplify, sat, unknown, FuncInterp, Extract, UGE
from z3 import Solver, simplify, sat, unknown, FuncInterp, UGE
from mythril.exceptions import UnsatError
from mythril.laser.ethereum.transaction.transaction_models import (
ContractCreationTransaction,
@ -40,12 +40,7 @@ def pretty_print_model(model):
return ret
def get_transaction_sequence(
global_state,
constraints,
caller="0xCA11EDEADBEEFCA11EDEADBEEFCA11ED37E636E6",
max_callvalue=None,
):
def get_transaction_sequence(global_state, constraints):
"""
Generate concrete transaction sequence
@ -58,7 +53,11 @@ def get_transaction_sequence(
transaction_sequence = global_state.world_state.transaction_sequence
# gaslimit & gasprice don't exist yet
tx_template = {"calldata": None, "call_value": None, "caller": caller}
tx_template = {
"calldata": None,
"call_value": None,
"caller": "0xCA11EDEADBEEF37E636E6CA11EDEADBEEFCA11ED",
}
txs = {}
creation_tx_ids = []
@ -68,15 +67,6 @@ def get_transaction_sequence(
tx_id = str(transaction.id)
if not isinstance(transaction, ContractCreationTransaction):
# Constrain caller
tx_constraints.append(
(Extract(159, 0, transaction.caller) == int(caller[2:], 16))
)
# Constrain callvalue
if max_callvalue != None:
tx_constraints.append(UGE(max_callvalue, transaction.call_value))
# Constrain calldatasize
max_calldatasize = 5000
if max_calldatasize != None:
@ -112,4 +102,11 @@ def get_transaction_sequence(
txs[tx_id]["call_value"] = call_value
if "caller" in name:
# caller is 'creator' for creation transactions
tx_id = name.replace("caller", "")
caller = "0x" + ("%x" % model[d].as_long()).zfill(64)
txs[tx_id]["caller"] = caller
return txs

@ -0,0 +1,107 @@
import re
from collections import Generator
from ethereum.opcodes import opcodes
regex_PUSH = re.compile("^PUSH(\d*)$")
# Additional mnemonic to catch failed assertions
opcodes[254] = ["ASSERT_FAIL", 0, 0, 0]
class EvmInstruction:
""" Model to hold the information of the disassembly """
def __init__(self, address, op_code, argument=None):
self.address = address
self.op_code = op_code
self.argument = argument
def to_dict(self) -> dict:
result = {"address": self.address, "opcode": self.op_code}
if self.argument:
result["argument"] = self.argument
return result
def instruction_list_to_easm(instruction_list: list) -> str:
result = ""
for instruction in instruction_list:
result += "{} {}".format(instruction["address"], instruction["opcode"])
if "argument" in instruction:
result += " " + instruction["argument"]
result += "\n"
return result
def get_opcode_from_name(operation_name: str) -> int:
for op_code, value in opcodes.items():
if operation_name == value[0]:
return op_code
raise RuntimeError("Unknown opcode")
def find_op_code_sequence(pattern: list, instruction_list: list) -> Generator:
"""
Returns all indices in instruction_list that point to instruction sequences following a pattern
:param pattern: The pattern to look for.
Example: [["PUSH1", "PUSH2"], ["EQ"]] where ["PUSH1", "EQ"] satisfies the pattern
:param instruction_list: List of instructions to look in
:return: Indices to the instruction sequences
"""
for i in range(0, len(instruction_list) - len(pattern) + 1):
if is_sequence_match(pattern, instruction_list, i):
yield i
def is_sequence_match(pattern: list, instruction_list: list, index: int) -> bool:
"""
Checks if the instructions starting at index follow a pattern
:param pattern: List of lists describing a pattern.
Example: [["PUSH1", "PUSH2"], ["EQ"]] where ["PUSH1", "EQ"] satisfies the pattern
:param instruction_list: List of instructions
:param index: Index to check for
:return: Pattern matched
"""
for index, pattern_slot in enumerate(pattern, start=index):
try:
if not instruction_list[index]["opcode"] in pattern_slot:
return False
except IndexError:
return False
return True
def disassemble(bytecode: str) -> list:
"""Disassembles evm bytecode and returns a list of instructions"""
instruction_list = []
address = 0
length = len(bytecode)
if "bzzr" in str(bytecode[-43:]):
# ignore swarm hash
length -= 43
while address < length:
try:
op_code = opcodes[bytecode[address]]
except KeyError:
instruction_list.append(EvmInstruction(address, "INVALID"))
address += 1
continue
op_code_name = op_code[0]
current_instruction = EvmInstruction(address, op_code_name)
match = re.search(regex_PUSH, op_code_name)
if match:
argument_bytes = bytecode[address + 1 : address + 1 + int(match.group(1))]
current_instruction.argument = "0x" + argument_bytes.hex()
address += int(match.group(1))
instruction_list.append(current_instruction)
address += 1
# We use a to_dict() here for compatibility reasons
return [element.to_dict() for element in instruction_list]

@ -1,4 +1,5 @@
from mythril.ether import asm, util
from mythril.ether import util
from mythril.disassembler import asm
from mythril.support.signatures import SignatureDb
import logging
@ -33,7 +34,7 @@ class Disassembly(object):
)
# Need to take from PUSH1 to PUSH4 because solc seems to remove excess 0s at the beginning for optimizing
jump_table_indices = asm.find_opcode_sequence(
jump_table_indices = asm.find_op_code_sequence(
[("PUSH1", "PUSH2", "PUSH3", "PUSH4"), ("EQ",)], self.instruction_list
)

@ -1,151 +0,0 @@
import sys
import re
from ethereum.opcodes import opcodes
from mythril.ether import util
regex_PUSH = re.compile("^PUSH(\d*)$")
# Additional mnemonic to catch failed assertions
opcodes[254] = ["ASSERT_FAIL", 0, 0, 0]
def instruction_list_to_easm(instruction_list):
easm = ""
for instruction in instruction_list:
easm += str(instruction["address"]) + " " + instruction["opcode"]
if "argument" in instruction:
easm += " " + instruction["argument"]
easm += "\n"
return easm
def easm_to_instruction_list(easm):
regex_CODELINE = re.compile("^([A-Z0-9]+)(?:\s+([0-9a-fA-Fx]+))?$")
instruction_list = []
codelines = easm.split("\n")
for line in codelines:
m = re.search(regex_CODELINE, line)
if not m:
# Invalid code line
continue
instruction = {"opcode": m.group(1)}
if m.group(2):
instruction["argument"] = m.group(2)[2:]
instruction_list.append(instruction)
return instruction_list
def get_opcode_from_name(name):
for opcode, value in opcodes.items():
if name == value[0]:
return opcode
raise RuntimeError("Unknown opcode")
def find_opcode_sequence(pattern, instruction_list):
match_indexes = []
pattern_length = len(pattern)
for i in range(0, len(instruction_list) - pattern_length + 1):
if instruction_list[i]["opcode"] in pattern[0]:
matched = True
for j in range(1, len(pattern)):
if not (instruction_list[i + j]["opcode"] in pattern[j]):
matched = False
break
if matched:
match_indexes.append(i)
return match_indexes
def disassemble(bytecode):
instruction_list = []
addr = 0
length = len(bytecode)
if "bzzr" in str(bytecode[-43:]):
# ignore swarm hash
length -= 43
while addr < length:
instruction = {"address": addr}
try:
if sys.version_info > (3, 0):
opcode = opcodes[bytecode[addr]]
else:
opcode = opcodes[ord(bytecode[addr])]
except KeyError:
# invalid opcode
instruction_list.append({"address": addr, "opcode": "INVALID"})
addr += 1
continue
instruction["opcode"] = opcode[0]
m = re.search(regex_PUSH, opcode[0])
if m:
argument = bytecode[addr + 1 : addr + 1 + int(m.group(1))]
instruction["argument"] = "0x" + argument.hex()
addr += int(m.group(1))
instruction_list.append(instruction)
addr += 1
return instruction_list
def assemble(instruction_list):
bytecode = b""
for instruction in instruction_list:
try:
opcode = get_opcode_from_name(instruction["opcode"])
except RuntimeError:
opcode = 0xBB
bytecode += opcode.to_bytes(1, byteorder="big")
if "argument" in instruction:
bytecode += util.safe_decode(instruction["argument"])
return bytecode

@ -159,7 +159,7 @@ def main():
options.add_argument(
"--max-transaction-count",
type=int,
default=3,
default=1,
help="Maximum number of transactions issued by laser",
)

@ -1,3 +1,3 @@
# This file is suitable for sourcing inside POSIX shell, e.g. bash as
# well as for importing into Python
VERSION = "v0.18.12" # NOQA
VERSION = "v0.18.13" # NOQA

@ -25,3 +25,4 @@ requests
rlp>=1.0.1
transaction>=2.2.1
z3-solver>=4.5
pysha3

@ -26,7 +26,7 @@ contract Rubixi {
Participant[] private participants;
//Fallback function
function() {
function() payable {
init();
}

@ -10,13 +10,17 @@ from mythril.laser.ethereum.state import GlobalState, Environment, Account
import pytest
from unittest.mock import MagicMock, patch
import pytest_mock
from mythril.disassembler.disassembly import Disassembly
def test_concrete_call():
# arrange
address = "0x10"
active_account = Account(address)
active_account.code = Disassembly("00")
environment = Environment(active_account, None, None, None, None, None)
state = GlobalState(None, None, None)
state = GlobalState(None, environment, None)
state.mstate.memory = ["placeholder", "calldata_bling_0"]
node = Node("example")
@ -50,7 +54,10 @@ def test_concrete_call_symbolic_to():
# arrange
address = "0x10"
state = GlobalState(None, None, None)
active_account = Account(address)
active_account.code = Disassembly("00")
environment = Environment(active_account, None, None, None, None, None)
state = GlobalState(None, environment, None)
state.mstate.memory = ["placeholder", "calldata_bling_0"]
node = Node("example")
@ -98,6 +105,7 @@ def test_symbolic_call_storage_to(mocker):
address = "0x10"
active_account = Account(address)
active_account.code = Disassembly("00")
environment = Environment(active_account, None, None, None, None, None)
state = GlobalState(None, environment, None)
state.mstate.memory = ["placeholder", "calldata_bling_0"]
@ -137,7 +145,10 @@ def test_symbolic_call_calldata_to(mocker):
# arrange
address = "0x10"
state = GlobalState(None, None, None)
active_account = Account(address)
active_account.code = Disassembly("00")
environment = Environment(active_account, None, None, None, None, None)
state = GlobalState(None, environment, None)
state.mstate.memory = ["placeholder", "calldata_bling_0"]
node = Node("example")
@ -182,6 +193,8 @@ def test_delegate_call(sym_mock, concrete_mock, curr_instruction):
curr_instruction.return_value = {"address": "0x10"}
active_account = Account("0x10")
active_account.code = Disassembly("00")
environment = Environment(active_account, None, None, None, None, None)
state = GlobalState(None, environment, Node)
state.mstate.memory = ["placeholder", "calldata_bling_0"]

@ -0,0 +1,124 @@
from mythril.disassembler.asm import *
import pytest
valid_names = [("PUSH1", 0x60), ("STOP", 0x0), ("RETURN", 0xF3)]
@pytest.mark.parametrize("operation_name, hex_value", valid_names)
def test_get_opcode(operation_name: str, hex_value: int):
# Act
return_value = get_opcode_from_name(operation_name)
# Assert
assert return_value == hex_value
def test_get_unknown_opcode():
operation_name = "definitely unknown"
# Act
with pytest.raises(RuntimeError):
get_opcode_from_name(operation_name)
sequence_match_test_data = [
# Normal no match
(
(["PUSH1"], ["EQ"]),
[{"opcode": "PUSH1"}, {"opcode": "PUSH3"}, {"opcode": "EQ"}],
1,
False,
),
# Normal match
(
(["PUSH1"], ["EQ"]),
[{"opcode": "PUSH1"}, {"opcode": "PUSH1"}, {"opcode": "EQ"}],
1,
True,
),
# Out of bounds pattern
(
(["PUSH1"], ["EQ"]),
[{"opcode": "PUSH1"}, {"opcode": "PUSH3"}, {"opcode": "EQ"}],
3,
False,
),
(
(["PUSH1"], ["EQ"]),
[{"opcode": "PUSH1"}, {"opcode": "PUSH3"}, {"opcode": "EQ"}],
2,
False,
),
# Double option match
(
(["PUSH1", "PUSH3"], ["EQ"]),
[{"opcode": "PUSH1"}, {"opcode": "PUSH1"}, {"opcode": "EQ"}],
1,
True,
),
(
(["PUSH1", "PUSH3"], ["EQ"]),
[{"opcode": "PUSH1"}, {"opcode": "PUSH3"}, {"opcode": "EQ"}],
1,
True,
),
# Double option no match
(
(["PUSH1", "PUSH3"], ["EQ"]),
[{"opcode": "PUSH1"}, {"opcode": "PUSH3"}, {"opcode": "EQ"}],
0,
False,
),
]
@pytest.mark.parametrize(
"pattern, instruction_list, index, expected_result", sequence_match_test_data
)
def test_is_sequence_match(pattern, instruction_list, index, expected_result):
# Act
return_value = is_sequence_match(pattern, instruction_list, index)
# Assert
assert return_value == expected_result
find_sequence_match_test_data = [
# Normal no match
(
(["PUSH1"], ["EQ"]),
[{"opcode": "PUSH1"}, {"opcode": "PUSH3"}, {"opcode": "EQ"}],
[],
),
# Normal match
(
(["PUSH1"], ["EQ"]),
[
{"opcode": "PUSH1"},
{"opcode": "PUSH1"},
{"opcode": "EQ"},
{"opcode": "PUSH1"},
{"opcode": "EQ"},
],
[1, 3],
),
]
@pytest.mark.parametrize(
"pattern, instruction_list, expected_result", find_sequence_match_test_data
)
def test_find_op_code_sequence(pattern, instruction_list, expected_result):
# Act
return_value = list(find_op_code_sequence(pattern, instruction_list))
# Assert
assert return_value == expected_result
def test_disassemble():
# Act
instruction_list = disassemble(b"\x00\x16\x06")
# Assert
assert instruction_list[0]["opcode"] == "STOP"
assert instruction_list[1]["opcode"] == "AND"
assert instruction_list[2]["opcode"] == "MOD"

@ -0,0 +1,52 @@
{
"sha3_0" : {
"_info" : {
"comment" : "",
"filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
"lllcversion" : "Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++",
"source" : "src/VMTestsFiller/vmSha3Test/sha3_0Filler.json",
"sourceHash" : "843009e4e97d7dd905578ea884db6d80c07f57d58679ec181dc761e1e51ae035"
},
"callcreates" : [
],
"env" : {
"currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
"currentDifficulty" : "0x0100",
"currentGasLimit" : "0x0f4240",
"currentNumber" : "0x00",
"currentTimestamp" : "0x01"
},
"exec" : {
"address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
"caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
"code" : "0x6000600020600055",
"data" : "0x",
"gas" : "0x174876e800",
"gasPrice" : "0x3b9aca00",
"origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
"value" : "0x0de0b6b3a7640000"
},
"gas" : "0x17487699b9",
"logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
"out" : "0x",
"post" : {
"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
"balance" : "0x152d02c7e14af6800000",
"code" : "0x6000600020600055",
"nonce" : "0x00",
"storage" : {
"0x00" : "0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470"
}
}
},
"pre" : {
"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
"balance" : "0x152d02c7e14af6800000",
"code" : "0x6000600020600055",
"nonce" : "0x00",
"storage" : {
}
}
}
}
}

@ -0,0 +1,52 @@
{
"sha3_1" : {
"_info" : {
"comment" : "",
"filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
"lllcversion" : "Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++",
"source" : "src/VMTestsFiller/vmSha3Test/sha3_1Filler.json",
"sourceHash" : "5f786aded76570c96466f5a4c4632a5a0b362ffc1e4124667cdb1e9328d1d81d"
},
"callcreates" : [
],
"env" : {
"currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
"currentDifficulty" : "0x0100",
"currentGasLimit" : "0x0f4240",
"currentNumber" : "0x00",
"currentTimestamp" : "0x01"
},
"exec" : {
"address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
"caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
"code" : "0x6005600420600055",
"data" : "0x",
"gas" : "0x0186a0",
"gasPrice" : "0x5af3107a4000",
"origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
"value" : "0x0de0b6b3a7640000"
},
"gas" : "0x013850",
"logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
"out" : "0x",
"post" : {
"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
"balance" : "0x152d02c7e14af6800000",
"code" : "0x6005600420600055",
"nonce" : "0x00",
"storage" : {
"0x00" : "0xc41589e7559804ea4a2080dad19d876a024ccb05117835447d72ce08c1d020ec"
}
}
},
"pre" : {
"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
"balance" : "0x152d02c7e14af6800000",
"code" : "0x6005600420600055",
"nonce" : "0x00",
"storage" : {
}
}
}
}
}

@ -0,0 +1,52 @@
{
"sha3_2" : {
"_info" : {
"comment" : "",
"filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
"lllcversion" : "Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++",
"source" : "src/VMTestsFiller/vmSha3Test/sha3_2Filler.json",
"sourceHash" : "bb3f59dc995c834eaf315b4819900c30ba4e97ef60163aed05946c70e841691f"
},
"callcreates" : [
],
"env" : {
"currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
"currentDifficulty" : "0x0100",
"currentGasLimit" : "0x0f4240",
"currentNumber" : "0x00",
"currentTimestamp" : "0x01"
},
"exec" : {
"address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
"caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
"code" : "0x600a600a20600055",
"data" : "0x",
"gas" : "0x0186a0",
"gasPrice" : "0x5af3107a4000",
"origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
"value" : "0x0de0b6b3a7640000"
},
"gas" : "0x013850",
"logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
"out" : "0x",
"post" : {
"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
"balance" : "0x152d02c7e14af6800000",
"code" : "0x600a600a20600055",
"nonce" : "0x00",
"storage" : {
"0x00" : "0x6bd2dd6bd408cbee33429358bf24fdc64612fbf8b1b4db604518f40ffd34b607"
}
}
},
"pre" : {
"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
"balance" : "0x152d02c7e14af6800000",
"code" : "0x600a600a20600055",
"nonce" : "0x00",
"storage" : {
}
}
}
}
}

@ -0,0 +1,37 @@
{
"sha3_3" : {
"_info" : {
"comment" : "",
"filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
"lllcversion" : "Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++",
"source" : "src/VMTestsFiller/vmSha3Test/sha3_3Filler.json",
"sourceHash" : "1f474f7dac8971615e641354d809db332975d1ea5ca589d855fb02a1da559033"
},
"env" : {
"currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
"currentDifficulty" : "0x0100",
"currentGasLimit" : "0x0f4240",
"currentNumber" : "0x00",
"currentTimestamp" : "0x01"
},
"exec" : {
"address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
"caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
"code" : "0x620fffff6103e820600055",
"data" : "0x",
"gas" : "0x0186a0",
"gasPrice" : "0x5af3107a4000",
"origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
"value" : "0x0de0b6b3a7640000"
},
"pre" : {
"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
"balance" : "0x152d02c7e14af6800000",
"code" : "0x620fffff6103e820600055",
"nonce" : "0x00",
"storage" : {
}
}
}
}
}

@ -0,0 +1,37 @@
{
"sha3_4" : {
"_info" : {
"comment" : "",
"filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
"lllcversion" : "Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++",
"source" : "src/VMTestsFiller/vmSha3Test/sha3_4Filler.json",
"sourceHash" : "100da75ff0b63159ca86aa4ef7457a956027af5c6c1ed1f0fa894aaa63849887"
},
"env" : {
"currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
"currentDifficulty" : "0x0100",
"currentGasLimit" : "0x0f4240",
"currentNumber" : "0x00",
"currentTimestamp" : "0x01"
},
"exec" : {
"address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
"caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
"code" : "0x6064640fffffffff20600055",
"data" : "0x",
"gas" : "0x0186a0",
"gasPrice" : "0x5af3107a4000",
"origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
"value" : "0x0de0b6b3a7640000"
},
"pre" : {
"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
"balance" : "0x152d02c7e14af6800000",
"code" : "0x6064640fffffffff20600055",
"nonce" : "0x00",
"storage" : {
}
}
}
}
}

@ -0,0 +1,37 @@
{
"sha3_5" : {
"_info" : {
"comment" : "",
"filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
"lllcversion" : "Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++",
"source" : "src/VMTestsFiller/vmSha3Test/sha3_5Filler.json",
"sourceHash" : "066bcf3a8e9e7b4c15ec2240c8e1bb0d53de0230c76989e21e4b6aaac83f577d"
},
"env" : {
"currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
"currentDifficulty" : "0x0100",
"currentGasLimit" : "0x0f4240",
"currentNumber" : "0x00",
"currentTimestamp" : "0x01"
},
"exec" : {
"address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
"caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
"code" : "0x640fffffffff61271020600055",
"data" : "0x",
"gas" : "0x0186a0",
"gasPrice" : "0x5af3107a4000",
"origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
"value" : "0x0de0b6b3a7640000"
},
"pre" : {
"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
"balance" : "0x152d02c7e14af6800000",
"code" : "0x640fffffffff61271020600055",
"nonce" : "0x00",
"storage" : {
}
}
}
}
}

@ -0,0 +1,37 @@
{
"sha3_6" : {
"_info" : {
"comment" : "",
"filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
"lllcversion" : "Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++",
"source" : "src/VMTestsFiller/vmSha3Test/sha3_6Filler.json",
"sourceHash" : "c360c6583bf965674d153f11c243c1e0807e95e99bc9bcb684a7ad2c7155dd40"
},
"env" : {
"currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
"currentDifficulty" : "0x0100",
"currentGasLimit" : "0x0f4240",
"currentNumber" : "0x00",
"currentTimestamp" : "0x01"
},
"exec" : {
"address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
"caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
"code" : "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff20600055",
"data" : "0x",
"gas" : "0x0186a0",
"gasPrice" : "0x5af3107a4000",
"origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
"value" : "0x0de0b6b3a7640000"
},
"pre" : {
"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
"balance" : "0x152d02c7e14af6800000",
"code" : "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff20600055",
"nonce" : "0x00",
"storage" : {
}
}
}
}
}

@ -0,0 +1,37 @@
{
"sha3_bigOffset" : {
"_info" : {
"comment" : "",
"filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
"lllcversion" : "Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++",
"source" : "src/VMTestsFiller/vmSha3Test/sha3_bigOffsetFiller.json",
"sourceHash" : "1ae2cdfa2e3ab1cac89d8b3d535c3ee50601ebc6098fdbddadca74980eec6382"
},
"env" : {
"currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
"currentDifficulty" : "0x0100",
"currentGasLimit" : "0x0f4240",
"currentNumber" : "0x00",
"currentTimestamp" : "0x01"
},
"exec" : {
"address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
"caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
"code" : "0x60027e0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff20600055",
"data" : "0x",
"gas" : "0x010000000000",
"gasPrice" : "0x01",
"origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
"value" : "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
},
"pre" : {
"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
"balance" : "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
"code" : "0x60027e0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff20600055",
"nonce" : "0x00",
"storage" : {
}
}
}
}
}

@ -0,0 +1,52 @@
{
"sha3_bigOffset2" : {
"_info" : {
"comment" : "",
"filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
"lllcversion" : "Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++",
"source" : "src/VMTestsFiller/vmSha3Test/sha3_bigOffset2Filler.json",
"sourceHash" : "2bf8d14886b1001b266c29bd9f9e764f7e6965e851bfe1440e536735fca993dc"
},
"callcreates" : [
],
"env" : {
"currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
"currentDifficulty" : "0x0100",
"currentGasLimit" : "0x0f4240",
"currentNumber" : "0x00",
"currentTimestamp" : "0x01"
},
"exec" : {
"address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
"caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
"code" : "0x6002630100000020600055",
"data" : "0x",
"gas" : "0x0100000000",
"gasPrice" : "0x01",
"origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
"value" : "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
},
"gas" : "0xdfe7a9b0",
"logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
"out" : "0x",
"post" : {
"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
"balance" : "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
"code" : "0x6002630100000020600055",
"nonce" : "0x00",
"storage" : {
"0x00" : "0x54a8c0ab653c15bfb48b47fd011ba2b9617af01cb45cab344acd57c924d56798"
}
}
},
"pre" : {
"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
"balance" : "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
"code" : "0x6002630100000020600055",
"nonce" : "0x00",
"storage" : {
}
}
}
}
}

@ -0,0 +1,37 @@
{
"sha3_bigSize" : {
"_info" : {
"comment" : "",
"filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
"lllcversion" : "Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++",
"source" : "src/VMTestsFiller/vmSha3Test/sha3_bigSizeFiller.json",
"sourceHash" : "571bfd9a15c6b0e317f96a92f745aee1d800aa4486c1a101b3e016120ffb5415"
},
"env" : {
"currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
"currentDifficulty" : "0x0100",
"currentGasLimit" : "0x0f4240",
"currentNumber" : "0x00",
"currentTimestamp" : "0x01"
},
"exec" : {
"address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
"caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
"code" : "0x7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff20600055",
"data" : "0x",
"gas" : "0x010000000000",
"gasPrice" : "0x01",
"origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
"value" : "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
},
"pre" : {
"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
"balance" : "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
"code" : "0x7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff20600055",
"nonce" : "0x00",
"storage" : {
}
}
}
}
}

@ -0,0 +1,52 @@
{
"sha3_memSizeNoQuadraticCost31" : {
"_info" : {
"comment" : "",
"filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
"lllcversion" : "Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++",
"source" : "src/VMTestsFiller/vmSha3Test/sha3_memSizeNoQuadraticCost31Filler.json",
"sourceHash" : "04553284981ef7338bdeac0e029652313a2643169833e386ca34bfa3d5e5942a"
},
"callcreates" : [
],
"env" : {
"currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
"currentDifficulty" : "0x0100",
"currentGasLimit" : "0x0f4240",
"currentNumber" : "0x00",
"currentTimestamp" : "0x01"
},
"exec" : {
"address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
"caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
"code" : "0x60016103c020600055",
"data" : "0x",
"gas" : "0x0100000000",
"gasPrice" : "0x01",
"origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
"value" : "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
},
"gas" : "0xffffb155",
"logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
"out" : "0x",
"post" : {
"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
"balance" : "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
"code" : "0x60016103c020600055",
"nonce" : "0x00",
"storage" : {
"0x00" : "0xbc36789e7a1e281436464229828f817d6612f7b477d66591ff96a9e064bcc98a"
}
}
},
"pre" : {
"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
"balance" : "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
"code" : "0x60016103c020600055",
"nonce" : "0x00",
"storage" : {
}
}
}
}
}

@ -0,0 +1,52 @@
{
"sha3_memSizeQuadraticCost32" : {
"_info" : {
"comment" : "",
"filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
"lllcversion" : "Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++",
"source" : "src/VMTestsFiller/vmSha3Test/sha3_memSizeQuadraticCost32Filler.json",
"sourceHash" : "70f68e0328222cc2c995bf932f2f8f65f5d4c7e9f040a51bbf4dae3cad9110cf"
},
"callcreates" : [
],
"env" : {
"currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
"currentDifficulty" : "0x0100",
"currentGasLimit" : "0x0f4240",
"currentNumber" : "0x00",
"currentTimestamp" : "0x01"
},
"exec" : {
"address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
"caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
"code" : "0x60016103e020600055",
"data" : "0x",
"gas" : "0x0100000000",
"gasPrice" : "0x01",
"origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
"value" : "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
},
"gas" : "0xffffb151",
"logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
"out" : "0x",
"post" : {
"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
"balance" : "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
"code" : "0x60016103e020600055",
"nonce" : "0x00",
"storage" : {
"0x00" : "0xbc36789e7a1e281436464229828f817d6612f7b477d66591ff96a9e064bcc98a"
}
}
},
"pre" : {
"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
"balance" : "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
"code" : "0x60016103e020600055",
"nonce" : "0x00",
"storage" : {
}
}
}
}
}

@ -0,0 +1,52 @@
{
"sha3_memSizeQuadraticCost32_zeroSize" : {
"_info" : {
"comment" : "",
"filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
"lllcversion" : "Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++",
"source" : "src/VMTestsFiller/vmSha3Test/sha3_memSizeQuadraticCost32_zeroSizeFiller.json",
"sourceHash" : "96094eee3e3fcd478fe3780ff053e64bf5391616bfdc6c2017bf12dcc5d30366"
},
"callcreates" : [
],
"env" : {
"currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
"currentDifficulty" : "0x0100",
"currentGasLimit" : "0x0f4240",
"currentNumber" : "0x00",
"currentTimestamp" : "0x01"
},
"exec" : {
"address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
"caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
"code" : "0x600061040020600055",
"data" : "0x",
"gas" : "0x0100000000",
"gasPrice" : "0x01",
"origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
"value" : "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
},
"gas" : "0xffffb1b9",
"logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
"out" : "0x",
"post" : {
"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
"balance" : "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
"code" : "0x600061040020600055",
"nonce" : "0x00",
"storage" : {
"0x00" : "0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470"
}
}
},
"pre" : {
"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
"balance" : "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
"code" : "0x600061040020600055",
"nonce" : "0x00",
"storage" : {
}
}
}
}
}

@ -0,0 +1,52 @@
{
"sha3_memSizeQuadraticCost33" : {
"_info" : {
"comment" : "",
"filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
"lllcversion" : "Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++",
"source" : "src/VMTestsFiller/vmSha3Test/sha3_memSizeQuadraticCost33Filler.json",
"sourceHash" : "2fc9e00a7759c4271b6897b285ae437f6484281e9113e82a8252afbe16e85841"
},
"callcreates" : [
],
"env" : {
"currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
"currentDifficulty" : "0x0100",
"currentGasLimit" : "0x0f4240",
"currentNumber" : "0x00",
"currentTimestamp" : "0x01"
},
"exec" : {
"address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
"caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
"code" : "0x600161040020600055",
"data" : "0x",
"gas" : "0x0100000000",
"gasPrice" : "0x01",
"origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
"value" : "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
},
"gas" : "0xffffb14e",
"logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
"out" : "0x",
"post" : {
"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
"balance" : "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
"code" : "0x600161040020600055",
"nonce" : "0x00",
"storage" : {
"0x00" : "0xbc36789e7a1e281436464229828f817d6612f7b477d66591ff96a9e064bcc98a"
}
}
},
"pre" : {
"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
"balance" : "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
"code" : "0x600161040020600055",
"nonce" : "0x00",
"storage" : {
}
}
}
}
}

@ -0,0 +1,52 @@
{
"sha3_memSizeQuadraticCost63" : {
"_info" : {
"comment" : "",
"filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
"lllcversion" : "Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++",
"source" : "src/VMTestsFiller/vmSha3Test/sha3_memSizeQuadraticCost63Filler.json",
"sourceHash" : "b81dd9fc94929d24f6a06dac81abb0099b969086ecf83326ecb4d6c98fc36f39"
},
"callcreates" : [
],
"env" : {
"currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
"currentDifficulty" : "0x0100",
"currentGasLimit" : "0x0f4240",
"currentNumber" : "0x00",
"currentTimestamp" : "0x01"
},
"exec" : {
"address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
"caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
"code" : "0x60016107c020600055",
"data" : "0x",
"gas" : "0x0100000000",
"gasPrice" : "0x01",
"origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
"value" : "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
},
"gas" : "0xffffb0ef",
"logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
"out" : "0x",
"post" : {
"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
"balance" : "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
"code" : "0x60016107c020600055",
"nonce" : "0x00",
"storage" : {
"0x00" : "0xbc36789e7a1e281436464229828f817d6612f7b477d66591ff96a9e064bcc98a"
}
}
},
"pre" : {
"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
"balance" : "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
"code" : "0x60016107c020600055",
"nonce" : "0x00",
"storage" : {
}
}
}
}
}

@ -0,0 +1,52 @@
{
"sha3_memSizeQuadraticCost64" : {
"_info" : {
"comment" : "",
"filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
"lllcversion" : "Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++",
"source" : "src/VMTestsFiller/vmSha3Test/sha3_memSizeQuadraticCost64Filler.json",
"sourceHash" : "9f1ae20cc7b481e84732b835af1d284c815d79a470ceb1094f0cf9e765a64b8d"
},
"callcreates" : [
],
"env" : {
"currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
"currentDifficulty" : "0x0100",
"currentGasLimit" : "0x0f4240",
"currentNumber" : "0x00",
"currentTimestamp" : "0x01"
},
"exec" : {
"address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
"caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
"code" : "0x60016107e020600055",
"data" : "0x",
"gas" : "0x0100000000",
"gasPrice" : "0x01",
"origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
"value" : "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
},
"gas" : "0xffffb0eb",
"logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
"out" : "0x",
"post" : {
"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
"balance" : "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
"code" : "0x60016107e020600055",
"nonce" : "0x00",
"storage" : {
"0x00" : "0xbc36789e7a1e281436464229828f817d6612f7b477d66591ff96a9e064bcc98a"
}
}
},
"pre" : {
"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
"balance" : "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
"code" : "0x60016107e020600055",
"nonce" : "0x00",
"storage" : {
}
}
}
}
}

@ -0,0 +1,52 @@
{
"sha3_memSizeQuadraticCost64_2" : {
"_info" : {
"comment" : "",
"filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
"lllcversion" : "Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++",
"source" : "src/VMTestsFiller/vmSha3Test/sha3_memSizeQuadraticCost64_2Filler.json",
"sourceHash" : "4d313aaddd74f092eae5089cce1aef3aadc74b019f617fdf24acedd8fb26300b"
},
"callcreates" : [
],
"env" : {
"currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
"currentDifficulty" : "0x0100",
"currentGasLimit" : "0x0f4240",
"currentNumber" : "0x00",
"currentTimestamp" : "0x01"
},
"exec" : {
"address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
"caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
"code" : "0x60206107e020600055",
"data" : "0x",
"gas" : "0x0100000000",
"gasPrice" : "0x01",
"origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
"value" : "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
},
"gas" : "0xffffb0eb",
"logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
"out" : "0x",
"post" : {
"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
"balance" : "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
"code" : "0x60206107e020600055",
"nonce" : "0x00",
"storage" : {
"0x00" : "0x290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563"
}
}
},
"pre" : {
"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
"balance" : "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
"code" : "0x60206107e020600055",
"nonce" : "0x00",
"storage" : {
}
}
}
}
}

@ -0,0 +1,52 @@
{
"sha3_memSizeQuadraticCost65" : {
"_info" : {
"comment" : "",
"filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
"lllcversion" : "Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++",
"source" : "src/VMTestsFiller/vmSha3Test/sha3_memSizeQuadraticCost65Filler.json",
"sourceHash" : "28d6ebfb32dd2c00c629fe373fe58fd83466484d6022cd476ca63981ffaa950a"
},
"callcreates" : [
],
"env" : {
"currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
"currentDifficulty" : "0x0100",
"currentGasLimit" : "0x0f4240",
"currentNumber" : "0x00",
"currentTimestamp" : "0x01"
},
"exec" : {
"address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
"caller" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
"code" : "0x600161080020600055",
"data" : "0x",
"gas" : "0x0100000000",
"gasPrice" : "0x01",
"origin" : "0xcd1722f3947def4cf144679da39c4c32bdc35681",
"value" : "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
},
"gas" : "0xffffb0e8",
"logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
"out" : "0x",
"post" : {
"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
"balance" : "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
"code" : "0x600161080020600055",
"nonce" : "0x00",
"storage" : {
"0x00" : "0xbc36789e7a1e281436464229828f817d6612f7b477d66591ff96a9e064bcc98a"
}
}
},
"pre" : {
"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
"balance" : "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
"code" : "0x600161080020600055",
"nonce" : "0x00",
"storage" : {
}
}
}
}
}

@ -63,6 +63,11 @@ def test_vmtest(
# Act
laser_evm.time = datetime.now()
# TODO: move this line below and check for VmExceptions when gas has been implemented
if post_condition == {}:
return
execute_message_call(
laser_evm,
callee_address=action["address"],
@ -77,10 +82,7 @@ def test_vmtest(
# Assert
if post_condition != {}:
assert len(laser_evm.open_states) == 1
else:
return
assert len(laser_evm.open_states) == 1
world_state = laser_evm.open_states[0]
model = get_model(next(iter(laser_evm.nodes.values())).states[0].mstate.constraints)

@ -59,4 +59,4 @@
});
</script>
</body>
</html>
</html>

@ -59,4 +59,4 @@
});
</script>
</body>
</html>
</html>

@ -1 +1 @@
{"error": null, "issues": [{"address": 158, "contract": "Unknown", "debug": "<DEBUG-DATA>", "description": "A possible integer overflow exists in the function `_function_0x83f12fec`.\nThe addition or multiplication may result in a value higher than the maximum representable integer.", "function": "_function_0x83f12fec", "swc_id": "101", "title": "Integer Overflow", "type": "Warning"}, {"address": 278, "contract": "Unknown", "debug": "<DEBUG-DATA>", "description": "A possible integer overflow exists in the function `_function_0x83f12fec`.\nThe addition or multiplication may result in a value higher than the maximum representable integer.", "function": "_function_0x83f12fec", "swc_id": "101", "title": "Integer Overflow", "type": "Warning"}, {"address": 378, "contract": "Unknown", "debug": "<DEBUG-DATA>", "description": "A possible integer underflow exists in the function `_function_0x83f12fec`.\nThe subtraction may result in a value < 0.", "function": "_function_0x83f12fec", "swc_id": "101", "title": "Integer Underflow", "type": "Warning"}], "success": true}
{"error": null, "issues": [{"address": 158, "contract": "Unknown", "debug": "<DEBUG-DATA>", "description": "The arithmetic operation can result in integer overflow.\n", "function": "_function_0x83f12fec", "swc_id": "101", "title": "Integer Overflow", "type": "Warning"}, {"address": 278, "contract": "Unknown", "debug": "<DEBUG-DATA>", "description": "The arithmetic operation can result in integer overflow.\n", "function": "_function_0x83f12fec", "swc_id": "101", "title": "Integer Overflow", "type": "Warning"}, {"address": 378, "contract": "Unknown", "debug": "<DEBUG-DATA>", "description": "The substraction can result in an integer underflow.\n", "function": "_function_0x83f12fec", "swc_id": "101", "title": "Integer Underflow", "type": "Warning"}], "success": true}

@ -9,8 +9,7 @@
### Description
A possible integer overflow exists in the function `_function_0x83f12fec`.
The addition or multiplication may result in a value higher than the maximum representable integer.
The arithmetic operation can result in integer overflow.
## Integer Overflow
- SWC ID: 101
@ -21,8 +20,7 @@ The addition or multiplication may result in a value higher than the maximum rep
### Description
A possible integer overflow exists in the function `_function_0x83f12fec`.
The addition or multiplication may result in a value higher than the maximum representable integer.
The arithmetic operation can result in integer overflow.
## Integer Underflow
- SWC ID: 101
@ -33,5 +31,4 @@ The addition or multiplication may result in a value higher than the maximum rep
### Description
A possible integer underflow exists in the function `_function_0x83f12fec`.
The subtraction may result in a value < 0.
The substraction can result in an integer underflow.

@ -4,8 +4,8 @@ Type: Warning
Contract: Unknown
Function name: _function_0x83f12fec
PC address: 158
A possible integer overflow exists in the function `_function_0x83f12fec`.
The addition or multiplication may result in a value higher than the maximum representable integer.
The arithmetic operation can result in integer overflow.
--------------------
==== Integer Overflow ====
@ -14,8 +14,8 @@ Type: Warning
Contract: Unknown
Function name: _function_0x83f12fec
PC address: 278
A possible integer overflow exists in the function `_function_0x83f12fec`.
The addition or multiplication may result in a value higher than the maximum representable integer.
The arithmetic operation can result in integer overflow.
--------------------
==== Integer Underflow ====
@ -24,7 +24,7 @@ Type: Warning
Contract: Unknown
Function name: _function_0x83f12fec
PC address: 378
A possible integer underflow exists in the function `_function_0x83f12fec`.
The subtraction may result in a value < 0.
The substraction can result in an integer underflow.
--------------------

@ -59,4 +59,4 @@
});
</script>
</body>
</html>
</html>

@ -1 +1 @@
{"error": null, "issues": [{"address": 722, "contract": "Unknown", "debug": "<DEBUG-DATA>", "description": "It seems that an attacker is able to execute an call instruction, this can mean that the attacker is able to extract funds out of the contract.", "function": "withdrawfunds()", "swc_id": "105", "title": "Ether send", "type": "Warning"}, {"address": 883, "contract": "Unknown", "debug": "<DEBUG-DATA>", "description": "The arithmetic operation can result in integer overflow.\n", "function": "invest()", "swc_id": "101", "title": "Integer Overflow", "type": "Warning"}], "success": true}
{"error": null, "issues": [{"address": 722, "contract": "Unknown", "debug": "<DEBUG-DATA>", "description": "It seems that an attacker is able to execute an call instruction, this can mean that the attacker is able to extract funds out of the contract.", "function": "withdrawfunds()", "swc_id": "105", "title": "Ether send", "type": "Warning"}, {"address": 883, "contract": "Unknown", "debug": "<DEBUG-DATA>", "description": "The arithmetic operation can result in integer overflow.\n", "function": "invest()", "swc_id": "101", "title": "Integer Overflow", "type": "Warning"}], "success": true}

@ -59,4 +59,4 @@
});
</script>
</body>
</html>
</html>

@ -59,4 +59,4 @@
});
</script>
</body>
</html>
</html>

@ -59,4 +59,4 @@
});
</script>
</body>
</html>
</html>

@ -59,4 +59,4 @@
});
</script>
</body>
</html>
</html>

@ -1 +1 @@
{"error": null, "issues": [{"address": 142, "contract": "Unknown", "debug": "<DEBUG-DATA>", "description": "It seems that an attacker is able to execute an call instruction, this can mean that the attacker is able to extract funds out of the contract.", "function": "_function_0x8a4068dd", "swc_id": "105", "title": "Ether send", "type": "Warning"}], "success": true}
{"error": null, "issues": [{"address": 142, "contract": "Unknown", "debug": "<DEBUG-DATA>", "description": "It seems that an attacker is able to execute an call instruction, this can mean that the attacker is able to extract funds out of the contract.", "function": "_function_0x8a4068dd", "swc_id": "105", "title": "Ether send", "type": "Warning"}], "success": true}

@ -59,4 +59,4 @@
});
</script>
</body>
</html>
</html>

@ -59,4 +59,4 @@
});
</script>
</body>
</html>
</html>

@ -1,400 +0,0 @@
0 PUSH1 0x60
2 PUSH1 0x40
4 MSTORE
5 PUSH1 0x04
7 CALLDATASIZE
8 LT
9 PUSH2 0x0083
12 JUMPI
13 PUSH1 0x00
15 CALLDATALOAD
16 PUSH29 0x0100000000000000000000000000000000000000000000000000000000
46 SWAP1
47 DIV
48 PUSH4 0xffffffff
53 AND
54 DUP1
55 PUSH4 0x2776b163
60 EQ
61 PUSH2 0x0088
64 JUMPI
65 DUP1
66 PUSH4 0x379bf63c
71 EQ
72 PUSH2 0x00c1
75 JUMPI
76 DUP1
77 PUSH4 0x5a6814ec
82 EQ
83 PUSH2 0x0116
86 JUMPI
87 DUP1
88 PUSH4 0xb5d02c8a
93 EQ
94 PUSH2 0x012b
97 JUMPI
98 DUP1
99 PUSH4 0xd24b08cc
104 EQ
105 PUSH2 0x0180
108 JUMPI
109 DUP1
110 PUSH4 0xe11f493e
115 EQ
116 PUSH2 0x0195
119 JUMPI
120 DUP1
121 PUSH4 0xe1d10f79
126 EQ
127 PUSH2 0x01aa
130 JUMPI
131 JUMPDEST
132 PUSH1 0x00
134 DUP1
135 REVERT
136 JUMPDEST
137 CALLVALUE
138 ISZERO
139 PUSH2 0x0093
142 JUMPI
143 PUSH1 0x00
145 DUP1
146 REVERT
147 JUMPDEST
148 PUSH2 0x00bf
151 PUSH1 0x04
153 DUP1
154 DUP1
155 CALLDATALOAD
156 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
177 AND
178 SWAP1
179 PUSH1 0x20
181 ADD
182 SWAP1
183 SWAP2
184 SWAP1
185 POP
186 POP
187 PUSH2 0x01e3
190 JUMP
191 JUMPDEST
192 STOP
193 JUMPDEST
194 CALLVALUE
195 ISZERO
196 PUSH2 0x00cc
199 JUMPI
200 PUSH1 0x00
202 DUP1
203 REVERT
204 JUMPDEST
205 PUSH2 0x00d4
208 PUSH2 0x0227
211 JUMP
212 JUMPDEST
213 PUSH1 0x40
215 MLOAD
216 DUP1
217 DUP3
218 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
239 AND
240 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
261 AND
262 DUP2
263 MSTORE
264 PUSH1 0x20
266 ADD
267 SWAP2
268 POP
269 POP
270 PUSH1 0x40
272 MLOAD
273 DUP1
274 SWAP2
275 SUB
276 SWAP1
277 RETURN
278 JUMPDEST
279 CALLVALUE
280 ISZERO
281 PUSH2 0x0121
284 JUMPI
285 PUSH1 0x00
287 DUP1
288 REVERT
289 JUMPDEST
290 PUSH2 0x0129
293 PUSH2 0x024c
296 JUMP
297 JUMPDEST
298 STOP
299 JUMPDEST
300 CALLVALUE
301 ISZERO
302 PUSH2 0x0136
305 JUMPI
306 PUSH1 0x00
308 DUP1
309 REVERT
310 JUMPDEST
311 PUSH2 0x013e
314 PUSH2 0x029b
317 JUMP
318 JUMPDEST
319 PUSH1 0x40
321 MLOAD
322 DUP1
323 DUP3
324 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
345 AND
346 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
367 AND
368 DUP2
369 MSTORE
370 PUSH1 0x20
372 ADD
373 SWAP2
374 POP
375 POP
376 PUSH1 0x40
378 MLOAD
379 DUP1
380 SWAP2
381 SUB
382 SWAP1
383 RETURN
384 JUMPDEST
385 CALLVALUE
386 ISZERO
387 PUSH2 0x018b
390 JUMPI
391 PUSH1 0x00
393 DUP1
394 REVERT
395 JUMPDEST
396 PUSH2 0x0193
399 PUSH2 0x02c1
402 JUMP
403 JUMPDEST
404 STOP
405 JUMPDEST
406 CALLVALUE
407 ISZERO
408 PUSH2 0x01a0
411 JUMPI
412 PUSH1 0x00
414 DUP1
415 REVERT
416 JUMPDEST
417 PUSH2 0x01a8
420 PUSH2 0x0311
423 JUMP
424 JUMPDEST
425 STOP
426 JUMPDEST
427 CALLVALUE
428 ISZERO
429 PUSH2 0x01b5
432 JUMPI
433 PUSH1 0x00
435 DUP1
436 REVERT
437 JUMPDEST
438 PUSH2 0x01e1
441 PUSH1 0x04
443 DUP1
444 DUP1
445 CALLDATALOAD
446 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
467 AND
468 SWAP1
469 PUSH1 0x20
471 ADD
472 SWAP1
473 SWAP2
474 SWAP1
475 POP
476 POP
477 PUSH2 0x0368
480 JUMP
481 JUMPDEST
482 STOP
483 JUMPDEST
484 DUP1
485 PUSH1 0x01
487 PUSH1 0x00
489 PUSH2 0x0100
492 EXP
493 DUP2
494 SLOAD
495 DUP2
496 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
517 MUL
518 NOT
519 AND
520 SWAP1
521 DUP4
522 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
543 AND
544 MUL
545 OR
546 SWAP1
547 SSTORE
548 POP
549 POP
550 JUMP
551 JUMPDEST
552 PUSH1 0x00
554 DUP1
555 SWAP1
556 SLOAD
557 SWAP1
558 PUSH2 0x0100
561 EXP
562 SWAP1
563 DIV
564 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
585 AND
586 DUP2
587 JUMP
588 JUMPDEST
589 PUSH1 0x00
591 DUP1
592 SWAP1
593 SLOAD
594 SWAP1
595 PUSH2 0x0100
598 EXP
599 SWAP1
600 DIV
601 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
622 AND
623 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
644 AND
645 PUSH1 0x40
647 MLOAD
648 PUSH1 0x00
650 PUSH1 0x40
652 MLOAD
653 DUP1
654 DUP4
655 SUB
656 DUP2
657 PUSH1 0x00
659 DUP7
660 GAS
661 CALL
662 SWAP2
663 POP
664 POP
665 POP
666 JUMP
667 JUMPDEST
668 PUSH1 0x01
670 PUSH1 0x00
672 SWAP1
673 SLOAD
674 SWAP1
675 PUSH2 0x0100
678 EXP
679 SWAP1
680 DIV
681 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
702 AND
703 DUP2
704 JUMP
705 JUMPDEST
706 PUSH1 0x01
708 PUSH1 0x00
710 SWAP1
711 SLOAD
712 SWAP1
713 PUSH2 0x0100
716 EXP
717 SWAP1
718 DIV
719 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
740 AND
741 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
762 AND
763 PUSH1 0x40
765 MLOAD
766 PUSH1 0x00
768 PUSH1 0x40
770 MLOAD
771 DUP1
772 DUP4
773 SUB
774 DUP2
775 PUSH1 0x00
777 DUP7
778 GAS
779 CALL
780 SWAP2
781 POP
782 POP
783 POP
784 JUMP
785 JUMPDEST
786 PUSH1 0x00
788 DUP1
789 SWAP1
790 SLOAD
791 SWAP1
792 PUSH2 0x0100
795 EXP
796 SWAP1
797 DIV
798 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
819 AND
820 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
841 AND
842 PUSH1 0x40
844 MLOAD
845 PUSH1 0x00
847 PUSH1 0x40
849 MLOAD
850 DUP1
851 DUP4
852 SUB
853 DUP2
854 PUSH1 0x00
856 DUP7
857 GAS
858 CALL
859 SWAP2
860 POP
861 POP
862 POP
863 PUSH1 0x00
865 PUSH1 0x02
867 DUP2
868 SWAP1
869 SSTORE
870 POP
871 JUMP
872 JUMPDEST
873 DUP1
874 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
895 AND
896 PUSH1 0x40
898 MLOAD
899 PUSH1 0x00
901 PUSH1 0x40
903 MLOAD
904 DUP1
905 DUP4
906 SUB
907 DUP2
908 PUSH1 0x00
910 DUP7
911 GAS
912 CALL
913 SWAP2
914 POP
915 POP
916 POP
917 POP
918 JUMP
919 STOP

File diff suppressed because one or more lines are too long

@ -1 +0,0 @@
{"error": null, "issues": [{"address": 661, "contract": "Unknown", "debug": "<DEBUG-DATA>", "description": "This contract executes a message call to to another contract. Make sure that the called contract is trusted and does not execute user-supplied code.", "function": "_function_0x5a6814ec", "swc_id": "107", "title": "Message call to external contract", "type": "Informational"}, {"address": 666, "contract": "Unknown", "debug": "<DEBUG-DATA>", "description": "The return value of an external call is not checked. Note that execution continue even if the called contract throws.", "function": "_function_0x5a6814ec", "swc_id": "104", "title": "Unchecked CALL return value", "type": "Informational"}, {"address": 779, "contract": "Unknown", "debug": "<DEBUG-DATA>", "description": "This contract executes a message call to an address found at storage slot 1. This storage slot can be written to by calling the function `_function_0x2776b163`. Generally, it is not recommended to call user-supplied addresses using Solidity's call() construct. Note that attackers might leverage reentrancy attacks to exploit race conditions or manipulate this contract's state.", "function": "_function_0xd24b08cc", "swc_id": "107", "title": "Message call to external contract", "type": "Warning"}, {"address": 779, "contract": "Unknown", "debug": "<DEBUG-DATA>", "description": "Possible transaction order dependence vulnerability: The value or direction of the call statement is determined from a tainted storage location", "function": "_function_0xd24b08cc", "swc_id": "114", "title": "Transaction order dependence", "type": "Warning"}, {"address": 784, "contract": "Unknown", "debug": "<DEBUG-DATA>", "description": "The return value of an external call is not checked. Note that execution continue even if the called contract throws.", "function": "_function_0xd24b08cc", "swc_id": "104", "title": "Unchecked CALL return value", "type": "Informational"}, {"address": 858, "contract": "Unknown", "debug": "<DEBUG-DATA>", "description": "This contract executes a message call to to another contract. Make sure that the called contract is trusted and does not execute user-supplied code.", "function": "_function_0xe11f493e", "swc_id": "107", "title": "Message call to external contract", "type": "Informational"}, {"address": 869, "contract": "Unknown", "debug": "<DEBUG-DATA>", "description": "The contract account state is changed after an external call. Consider that the called contract could re-enter the function before this state change takes place. This can lead to business logic vulnerabilities.", "function": "_function_0xe11f493e", "swc_id": "107", "title": "State change after external call", "type": "Warning"}, {"address": 871, "contract": "Unknown", "debug": "<DEBUG-DATA>", "description": "The return value of an external call is not checked. Note that execution continue even if the called contract throws.", "function": "_function_0xe11f493e", "swc_id": "104", "title": "Unchecked CALL return value", "type": "Informational"}, {"address": 912, "contract": "Unknown", "debug": "<DEBUG-DATA>", "description": "This contract executes a message call to an address provided as a function argument. Generally, it is not recommended to call user-supplied addresses using Solidity's call() construct. Note that attackers might leverage reentrancy attacks to exploit race conditions or manipulate this contract's state.", "function": "_function_0xe1d10f79", "swc_id": "107", "title": "Message call to external contract", "type": "Warning"}, {"address": 918, "contract": "Unknown", "debug": "<DEBUG-DATA>", "description": "The return value of an external call is not checked. Note that execution continue even if the called contract throws.", "function": "_function_0xe1d10f79", "swc_id": "104", "title": "Unchecked CALL return value", "type": "Informational"}], "success": true}

@ -1,111 +0,0 @@
# Analysis results for test-filename.sol
## Message call to external contract
- SWC ID: 107
- Type: Informational
- Contract: Unknown
- Function name: `_function_0x5a6814ec`
- PC address: 661
### Description
This contract executes a message call to to another contract. Make sure that the called contract is trusted and does not execute user-supplied code.
## Unchecked CALL return value
- SWC ID: 104
- Type: Informational
- Contract: Unknown
- Function name: `_function_0x5a6814ec`
- PC address: 666
### Description
The return value of an external call is not checked. Note that execution continue even if the called contract throws.
## Message call to external contract
- SWC ID: 107
- Type: Warning
- Contract: Unknown
- Function name: `_function_0xd24b08cc`
- PC address: 779
### Description
This contract executes a message call to an address found at storage slot 1. This storage slot can be written to by calling the function `_function_0x2776b163`. Generally, it is not recommended to call user-supplied addresses using Solidity's call() construct. Note that attackers might leverage reentrancy attacks to exploit race conditions or manipulate this contract's state.
## Transaction order dependence
- SWC ID: 114
- Type: Warning
- Contract: Unknown
- Function name: `_function_0xd24b08cc`
- PC address: 779
### Description
Possible transaction order dependence vulnerability: The value or direction of the call statement is determined from a tainted storage location
## Unchecked CALL return value
- SWC ID: 104
- Type: Informational
- Contract: Unknown
- Function name: `_function_0xd24b08cc`
- PC address: 784
### Description
The return value of an external call is not checked. Note that execution continue even if the called contract throws.
## Message call to external contract
- SWC ID: 107
- Type: Informational
- Contract: Unknown
- Function name: `_function_0xe11f493e`
- PC address: 858
### Description
This contract executes a message call to to another contract. Make sure that the called contract is trusted and does not execute user-supplied code.
## State change after external call
- SWC ID: 107
- Type: Warning
- Contract: Unknown
- Function name: `_function_0xe11f493e`
- PC address: 869
### Description
The contract account state is changed after an external call. Consider that the called contract could re-enter the function before this state change takes place. This can lead to business logic vulnerabilities.
## Unchecked CALL return value
- SWC ID: 104
- Type: Informational
- Contract: Unknown
- Function name: `_function_0xe11f493e`
- PC address: 871
### Description
The return value of an external call is not checked. Note that execution continue even if the called contract throws.
## Message call to external contract
- SWC ID: 107
- Type: Warning
- Contract: Unknown
- Function name: `_function_0xe1d10f79`
- PC address: 912
### Description
This contract executes a message call to an address provided as a function argument. Generally, it is not recommended to call user-supplied addresses using Solidity's call() construct. Note that attackers might leverage reentrancy attacks to exploit race conditions or manipulate this contract's state.
## Unchecked CALL return value
- SWC ID: 104
- Type: Informational
- Contract: Unknown
- Function name: `_function_0xe1d10f79`
- PC address: 918
### Description
The return value of an external call is not checked. Note that execution continue even if the called contract throws.

@ -1,90 +0,0 @@
==== Message call to external contract ====
SWC ID: 107
Type: Informational
Contract: Unknown
Function name: _function_0x5a6814ec
PC address: 661
This contract executes a message call to to another contract. Make sure that the called contract is trusted and does not execute user-supplied code.
--------------------
==== Unchecked CALL return value ====
SWC ID: 104
Type: Informational
Contract: Unknown
Function name: _function_0x5a6814ec
PC address: 666
The return value of an external call is not checked. Note that execution continue even if the called contract throws.
--------------------
==== Message call to external contract ====
SWC ID: 107
Type: Warning
Contract: Unknown
Function name: _function_0xd24b08cc
PC address: 779
This contract executes a message call to an address found at storage slot 1. This storage slot can be written to by calling the function `_function_0x2776b163`. Generally, it is not recommended to call user-supplied addresses using Solidity's call() construct. Note that attackers might leverage reentrancy attacks to exploit race conditions or manipulate this contract's state.
--------------------
==== Transaction order dependence ====
SWC ID: 114
Type: Warning
Contract: Unknown
Function name: _function_0xd24b08cc
PC address: 779
Possible transaction order dependence vulnerability: The value or direction of the call statement is determined from a tainted storage location
--------------------
==== Unchecked CALL return value ====
SWC ID: 104
Type: Informational
Contract: Unknown
Function name: _function_0xd24b08cc
PC address: 784
The return value of an external call is not checked. Note that execution continue even if the called contract throws.
--------------------
==== Message call to external contract ====
SWC ID: 107
Type: Informational
Contract: Unknown
Function name: _function_0xe11f493e
PC address: 858
This contract executes a message call to to another contract. Make sure that the called contract is trusted and does not execute user-supplied code.
--------------------
==== State change after external call ====
SWC ID: 107
Type: Warning
Contract: Unknown
Function name: _function_0xe11f493e
PC address: 869
The contract account state is changed after an external call. Consider that the called contract could re-enter the function before this state change takes place. This can lead to business logic vulnerabilities.
--------------------
==== Unchecked CALL return value ====
SWC ID: 104
Type: Informational
Contract: Unknown
Function name: _function_0xe11f493e
PC address: 871
The return value of an external call is not checked. Note that execution continue even if the called contract throws.
--------------------
==== Message call to external contract ====
SWC ID: 107
Type: Warning
Contract: Unknown
Function name: _function_0xe1d10f79
PC address: 912
This contract executes a message call to an address provided as a function argument. Generally, it is not recommended to call user-supplied addresses using Solidity's call() construct. Note that attackers might leverage reentrancy attacks to exploit race conditions or manipulate this contract's state.
--------------------
==== Unchecked CALL return value ====
SWC ID: 104
Type: Informational
Contract: Unknown
Function name: _function_0xe1d10f79
PC address: 918
The return value of an external call is not checked. Note that execution continue even if the called contract throws.
--------------------

@ -1,259 +0,0 @@
0 PUSH1 0x80
2 PUSH1 0x40
4 MSTORE
5 PUSH1 0x04
7 CALLDATASIZE
8 LT
9 PUSH2 0x004c
12 JUMPI
13 PUSH1 0x00
15 CALLDATALOAD
16 PUSH29 0x0100000000000000000000000000000000000000000000000000000000
46 SWAP1
47 DIV
48 PUSH4 0xffffffff
53 AND
54 DUP1
55 PUSH4 0x06661abd
60 EQ
61 PUSH2 0x0051
64 JUMPI
65 DUP1
66 PUSH4 0x83f12fec
71 EQ
72 PUSH2 0x007c
75 JUMPI
76 JUMPDEST
77 PUSH1 0x00
79 DUP1
80 REVERT
81 JUMPDEST
82 CALLVALUE
83 DUP1
84 ISZERO
85 PUSH2 0x005d
88 JUMPI
89 PUSH1 0x00
91 DUP1
92 REVERT
93 JUMPDEST
94 POP
95 PUSH2 0x0066
98 PUSH2 0x0104
101 JUMP
102 JUMPDEST
103 PUSH1 0x40
105 MLOAD
106 DUP1
107 DUP3
108 DUP2
109 MSTORE
110 PUSH1 0x20
112 ADD
113 SWAP2
114 POP
115 POP
116 PUSH1 0x40
118 MLOAD
119 DUP1
120 SWAP2
121 SUB
122 SWAP1
123 RETURN
124 JUMPDEST
125 CALLVALUE
126 DUP1
127 ISZERO
128 PUSH2 0x0088
131 JUMPI
132 PUSH1 0x00
134 DUP1
135 REVERT
136 JUMPDEST
137 POP
138 PUSH2 0x00ea
141 PUSH1 0x04
143 DUP1
144 CALLDATASIZE
145 SUB
146 DUP2
147 ADD
148 SWAP1
149 DUP1
150 DUP1
151 CALLDATALOAD
152 SWAP1
153 PUSH1 0x20
155 ADD
156 SWAP1
157 DUP3
158 ADD
159 DUP1
160 CALLDATALOAD
161 SWAP1
162 PUSH1 0x20
164 ADD
165 SWAP1
166 DUP1
167 DUP1
168 PUSH1 0x20
170 MUL
171 PUSH1 0x20
173 ADD
174 PUSH1 0x40
176 MLOAD
177 SWAP1
178 DUP2
179 ADD
180 PUSH1 0x40
182 MSTORE
183 DUP1
184 SWAP4
185 SWAP3
186 SWAP2
187 SWAP1
188 DUP2
189 DUP2
190 MSTORE
191 PUSH1 0x20
193 ADD
194 DUP4
195 DUP4
196 PUSH1 0x20
198 MUL
199 DUP1
200 DUP3
201 DUP5
202 CALLDATACOPY
203 DUP3
204 ADD
205 SWAP2
206 POP
207 POP
208 POP
209 POP
210 POP
211 POP
212 SWAP2
213 SWAP3
214 SWAP2
215 SWAP3
216 SWAP1
217 DUP1
218 CALLDATALOAD
219 SWAP1
220 PUSH1 0x20
222 ADD
223 SWAP1
224 SWAP3
225 SWAP2
226 SWAP1
227 POP
228 POP
229 POP
230 PUSH2 0x010a
233 JUMP
234 JUMPDEST
235 PUSH1 0x40
237 MLOAD
238 DUP1
239 DUP3
240 ISZERO
241 ISZERO
242 ISZERO
243 ISZERO
244 DUP2
245 MSTORE
246 PUSH1 0x20
248 ADD
249 SWAP2
250 POP
251 POP
252 PUSH1 0x40
254 MLOAD
255 DUP1
256 SWAP2
257 SUB
258 SWAP1
259 RETURN
260 JUMPDEST
261 PUSH1 0x00
263 SLOAD
264 DUP2
265 JUMP
266 JUMPDEST
267 PUSH1 0x00
269 DUP1
270 PUSH1 0x00
272 DUP5
273 MLOAD
274 SWAP2
275 POP
276 DUP4
277 DUP3
278 MUL
279 SWAP1
280 POP
281 PUSH1 0x00
283 DUP3
284 GT
285 DUP1
286 ISZERO
287 PUSH2 0x0129
290 JUMPI
291 POP
292 PUSH1 0x14
294 DUP3
295 GT
296 ISZERO
297 JUMPDEST
298 ISZERO
299 ISZERO
300 PUSH2 0x0134
303 JUMPI
304 PUSH1 0x00
306 DUP1
307 REVERT
308 JUMPDEST
309 DUP1
310 PUSH1 0x01
312 PUSH1 0x00
314 CALLER
315 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
336 AND
337 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
358 AND
359 DUP2
360 MSTORE
361 PUSH1 0x20
363 ADD
364 SWAP1
365 DUP2
366 MSTORE
367 PUSH1 0x20
369 ADD
370 PUSH1 0x00
372 SHA3
373 PUSH1 0x00
375 DUP3
376 DUP3
377 SLOAD
378 SUB
379 SWAP3
380 POP
381 POP
382 DUP2
383 SWAP1
384 SSTORE
385 POP
386 PUSH1 0x01
388 SWAP3
389 POP
390 POP
391 POP
392 SWAP3
393 SWAP2
394 POP
395 POP
396 JUMP
397 STOP

File diff suppressed because one or more lines are too long

@ -1,420 +0,0 @@
0 PUSH1 0x80
2 PUSH1 0x40
4 MSTORE
5 PUSH1 0x04
7 CALLDATASIZE
8 LT
9 PUSH2 0x0078
12 JUMPI
13 PUSH1 0x00
15 CALLDATALOAD
16 PUSH29 0x0100000000000000000000000000000000000000000000000000000000
46 SWAP1
47 DIV
48 PUSH4 0xffffffff
53 AND
54 DUP1
55 PUSH4 0x12065fe0
60 EQ
61 PUSH2 0x007d
64 JUMPI
65 DUP1
66 PUSH4 0x27e235e3
71 EQ
72 PUSH2 0x00a8
75 JUMPI
76 DUP1
77 PUSH4 0x56885cd8
82 EQ
83 PUSH2 0x00ff
86 JUMPI
87 DUP1
88 PUSH4 0x6c343ffe
93 EQ
94 PUSH2 0x0116
97 JUMPI
98 DUP1
99 PUSH4 0x8da5cb5b
104 EQ
105 PUSH2 0x012d
108 JUMPI
109 DUP1
110 PUSH4 0xe8b5e51f
115 EQ
116 PUSH2 0x0184
119 JUMPI
120 JUMPDEST
121 PUSH1 0x00
123 DUP1
124 REVERT
125 JUMPDEST
126 CALLVALUE
127 DUP1
128 ISZERO
129 PUSH2 0x0089
132 JUMPI
133 PUSH1 0x00
135 DUP1
136 REVERT
137 JUMPDEST
138 POP
139 PUSH2 0x0092
142 PUSH2 0x018e
145 JUMP
146 JUMPDEST
147 PUSH1 0x40
149 MLOAD
150 DUP1
151 DUP3
152 DUP2
153 MSTORE
154 PUSH1 0x20
156 ADD
157 SWAP2
158 POP
159 POP
160 PUSH1 0x40
162 MLOAD
163 DUP1
164 SWAP2
165 SUB
166 SWAP1
167 RETURN
168 JUMPDEST
169 CALLVALUE
170 DUP1
171 ISZERO
172 PUSH2 0x00b4
175 JUMPI
176 PUSH1 0x00
178 DUP1
179 REVERT
180 JUMPDEST
181 POP
182 PUSH2 0x00e9
185 PUSH1 0x04
187 DUP1
188 CALLDATASIZE
189 SUB
190 DUP2
191 ADD
192 SWAP1
193 DUP1
194 DUP1
195 CALLDATALOAD
196 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
217 AND
218 SWAP1
219 PUSH1 0x20
221 ADD
222 SWAP1
223 SWAP3
224 SWAP2
225 SWAP1
226 POP
227 POP
228 POP
229 PUSH2 0x01d4
232 JUMP
233 JUMPDEST
234 PUSH1 0x40
236 MLOAD
237 DUP1
238 DUP3
239 DUP2
240 MSTORE
241 PUSH1 0x20
243 ADD
244 SWAP2
245 POP
246 POP
247 PUSH1 0x40
249 MLOAD
250 DUP1
251 SWAP2
252 SUB
253 SWAP1
254 RETURN
255 JUMPDEST
256 CALLVALUE
257 DUP1
258 ISZERO
259 PUSH2 0x010b
262 JUMPI
263 PUSH1 0x00
265 DUP1
266 REVERT
267 JUMPDEST
268 POP
269 PUSH2 0x0114
272 PUSH2 0x01ec
275 JUMP
276 JUMPDEST
277 STOP
278 JUMPDEST
279 CALLVALUE
280 DUP1
281 ISZERO
282 PUSH2 0x0122
285 JUMPI
286 PUSH1 0x00
288 DUP1
289 REVERT
290 JUMPDEST
291 POP
292 PUSH2 0x012b
295 PUSH2 0x022f
298 JUMP
299 JUMPDEST
300 STOP
301 JUMPDEST
302 CALLVALUE
303 DUP1
304 ISZERO
305 PUSH2 0x0139
308 JUMPI
309 PUSH1 0x00
311 DUP1
312 REVERT
313 JUMPDEST
314 POP
315 PUSH2 0x0142
318 PUSH2 0x02eb
321 JUMP
322 JUMPDEST
323 PUSH1 0x40
325 MLOAD
326 DUP1
327 DUP3
328 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
349 AND
350 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
371 AND
372 DUP2
373 MSTORE
374 PUSH1 0x20
376 ADD
377 SWAP2
378 POP
379 POP
380 PUSH1 0x40
382 MLOAD
383 DUP1
384 SWAP2
385 SUB
386 SWAP1
387 RETURN
388 JUMPDEST
389 PUSH2 0x018c
392 PUSH2 0x0311
395 JUMP
396 JUMPDEST
397 STOP
398 JUMPDEST
399 PUSH1 0x00
401 DUP1
402 PUSH1 0x00
404 CALLER
405 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
426 AND
427 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
448 AND
449 DUP2
450 MSTORE
451 PUSH1 0x20
453 ADD
454 SWAP1
455 DUP2
456 MSTORE
457 PUSH1 0x20
459 ADD
460 PUSH1 0x00
462 SHA3
463 SLOAD
464 SWAP1
465 POP
466 SWAP1
467 JUMP
468 JUMPDEST
469 PUSH1 0x00
471 PUSH1 0x20
473 MSTORE
474 DUP1
475 PUSH1 0x00
477 MSTORE
478 PUSH1 0x40
480 PUSH1 0x00
482 SHA3
483 PUSH1 0x00
485 SWAP2
486 POP
487 SWAP1
488 POP
489 SLOAD
490 DUP2
491 JUMP
492 JUMPDEST
493 CALLER
494 PUSH1 0x01
496 PUSH1 0x00
498 PUSH2 0x0100
501 EXP
502 DUP2
503 SLOAD
504 DUP2
505 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
526 MUL
527 NOT
528 AND
529 SWAP1
530 DUP4
531 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
552 AND
553 MUL
554 OR
555 SWAP1
556 SSTORE
557 POP
558 JUMP
559 JUMPDEST
560 PUSH1 0x01
562 PUSH1 0x00
564 SWAP1
565 SLOAD
566 SWAP1
567 PUSH2 0x0100
570 EXP
571 SWAP1
572 DIV
573 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
594 AND
595 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
616 AND
617 CALLER
618 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
639 AND
640 EQ
641 ISZERO
642 ISZERO
643 PUSH2 0x028b
646 JUMPI
647 PUSH1 0x00
649 DUP1
650 REVERT
651 JUMPDEST
652 CALLER
653 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
674 AND
675 PUSH2 0x08fc
678 ADDRESS
679 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
700 AND
701 BALANCE
702 SWAP1
703 DUP2
704 ISZERO
705 MUL
706 SWAP1
707 PUSH1 0x40
709 MLOAD
710 PUSH1 0x00
712 PUSH1 0x40
714 MLOAD
715 DUP1
716 DUP4
717 SUB
718 DUP2
719 DUP6
720 DUP9
721 DUP9
722 CALL
723 SWAP4
724 POP
725 POP
726 POP
727 POP
728 ISZERO
729 DUP1
730 ISZERO
731 PUSH2 0x02e8
734 JUMPI
735 RETURNDATASIZE
736 PUSH1 0x00
738 DUP1
739 RETURNDATACOPY
740 RETURNDATASIZE
741 PUSH1 0x00
743 REVERT
744 JUMPDEST
745 POP
746 JUMP
747 JUMPDEST
748 PUSH1 0x01
750 PUSH1 0x00
752 SWAP1
753 SLOAD
754 SWAP1
755 PUSH2 0x0100
758 EXP
759 SWAP1
760 DIV
761 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
782 AND
783 DUP2
784 JUMP
785 JUMPDEST
786 PUSH1 0x02
788 SLOAD
789 CALLVALUE
790 GT
791 DUP1
792 ISZERO
793 PUSH2 0x0323
796 JUMPI
797 POP
798 PUSH1 0x03
800 SLOAD
801 CALLVALUE
802 LT
803 JUMPDEST
804 ISZERO
805 ISZERO
806 PUSH2 0x032e
809 JUMPI
810 PUSH1 0x00
812 DUP1
813 REVERT
814 JUMPDEST
815 CALLVALUE
816 PUSH1 0x00
818 DUP1
819 CALLER
820 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
841 AND
842 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
863 AND
864 DUP2
865 MSTORE
866 PUSH1 0x20
868 ADD
869 SWAP1
870 DUP2
871 MSTORE
872 PUSH1 0x20
874 ADD
875 PUSH1 0x00
877 SHA3
878 PUSH1 0x00
880 DUP3
881 DUP3
882 SLOAD
883 ADD
884 SWAP3
885 POP
886 POP
887 DUP2
888 SWAP1
889 SSTORE
890 POP
891 JUMP
892 STOP

File diff suppressed because one or more lines are too long

@ -1 +0,0 @@
{"error": null, "issues": [{"address": 722, "contract": "Unknown", "debug": "<DEBUG-DATA>", "description": "It seems that an attacker is able to execute an call instruction, this can mean that the attacker is able to extract funds out of the contract.", "function": "withdrawfunds()", "swc_id": "105", "title": "Ether send", "type": "Warning"}, {"address": 883, "contract": "Unknown", "debug": "<DEBUG-DATA>", "description": "The arithmetic operation can result in integer overflow.\n", "function": "invest()", "swc_id": "101", "title": "Integer Overflow", "type": "Warning"}], "success": true}

@ -1,23 +0,0 @@
# Analysis results for test-filename.sol
## Ether send
- SWC ID: 105
- Type: Warning
- Contract: Unknown
- Function name: `withdrawfunds()`
- PC address: 722
### Description
It seems that an attacker is able to execute an call instruction, this can mean that the attacker is able to extract funds out of the contract.
## Integer Overflow
- SWC ID: 101
- Type: Warning
- Contract: Unknown
- Function name: `invest()`
- PC address: 883
### Description
The arithmetic operation can result in integer overflow.

@ -1,19 +0,0 @@
==== Ether send ====
SWC ID: 105
Type: Warning
Contract: Unknown
Function name: withdrawfunds()
PC address: 722
It seems that an attacker is able to execute an call instruction, this can mean that the attacker is able to extract funds out of the contract.
--------------------
==== Integer Overflow ====
SWC ID: 101
Type: Warning
Contract: Unknown
Function name: invest()
PC address: 883
The arithmetic operation can result in integer overflow.
--------------------

@ -1,392 +0,0 @@
0 PUSH1 0x60
2 PUSH1 0x40
4 MSTORE
5 PUSH1 0x04
7 CALLDATASIZE
8 LT
9 PUSH2 0x008e
12 JUMPI
13 PUSH1 0x00
15 CALLDATALOAD
16 PUSH29 0x0100000000000000000000000000000000000000000000000000000000
46 SWAP1
47 DIV
48 PUSH4 0xffffffff
53 AND
54 DUP1
55 PUSH4 0x01d4277c
60 EQ
61 PUSH2 0x0093
64 JUMPI
65 DUP1
66 PUSH4 0x546455b5
71 EQ
72 PUSH2 0x00b6
75 JUMPI
76 DUP1
77 PUSH4 0x78375f14
82 EQ
83 PUSH2 0x00d9
86 JUMPI
87 DUP1
88 PUSH4 0x92dd38ea
93 EQ
94 PUSH2 0x00fc
97 JUMPI
98 DUP1
99 PUSH4 0xa08299f1
104 EQ
105 PUSH2 0x011f
108 JUMPI
109 DUP1
110 PUSH4 0xb34c3610
115 EQ
116 PUSH2 0x0142
119 JUMPI
120 DUP1
121 PUSH4 0xb630d706
126 EQ
127 PUSH2 0x0157
130 JUMPI
131 DUP1
132 PUSH4 0xf44f13d8
137 EQ
138 PUSH2 0x017a
141 JUMPI
142 JUMPDEST
143 PUSH1 0x00
145 DUP1
146 REVERT
147 JUMPDEST
148 CALLVALUE
149 ISZERO
150 PUSH2 0x009e
153 JUMPI
154 PUSH1 0x00
156 DUP1
157 REVERT
158 JUMPDEST
159 PUSH2 0x00b4
162 PUSH1 0x04
164 DUP1
165 DUP1
166 CALLDATALOAD
167 SWAP1
168 PUSH1 0x20
170 ADD
171 SWAP1
172 SWAP2
173 SWAP1
174 POP
175 POP
176 PUSH2 0x018f
179 JUMP
180 JUMPDEST
181 STOP
182 JUMPDEST
183 CALLVALUE
184 ISZERO
185 PUSH2 0x00c1
188 JUMPI
189 PUSH1 0x00
191 DUP1
192 REVERT
193 JUMPDEST
194 PUSH2 0x00d7
197 PUSH1 0x04
199 DUP1
200 DUP1
201 CALLDATALOAD
202 SWAP1
203 PUSH1 0x20
205 ADD
206 SWAP1
207 SWAP2
208 SWAP1
209 POP
210 POP
211 PUSH2 0x01b2
214 JUMP
215 JUMPDEST
216 STOP
217 JUMPDEST
218 CALLVALUE
219 ISZERO
220 PUSH2 0x00e4
223 JUMPI
224 PUSH1 0x00
226 DUP1
227 REVERT
228 JUMPDEST
229 PUSH2 0x00fa
232 PUSH1 0x04
234 DUP1
235 DUP1
236 CALLDATALOAD
237 SWAP1
238 PUSH1 0x20
240 ADD
241 SWAP1
242 SWAP2
243 SWAP1
244 POP
245 POP
246 PUSH2 0x01c2
249 JUMP
250 JUMPDEST
251 STOP
252 JUMPDEST
253 CALLVALUE
254 ISZERO
255 PUSH2 0x0107
258 JUMPI
259 PUSH1 0x00
261 DUP1
262 REVERT
263 JUMPDEST
264 PUSH2 0x011d
267 PUSH1 0x04
269 DUP1
270 DUP1
271 CALLDATALOAD
272 SWAP1
273 PUSH1 0x20
275 ADD
276 SWAP1
277 SWAP2
278 SWAP1
279 POP
280 POP
281 PUSH2 0x01d5
284 JUMP
285 JUMPDEST
286 STOP
287 JUMPDEST
288 CALLVALUE
289 ISZERO
290 PUSH2 0x012a
293 JUMPI
294 PUSH1 0x00
296 DUP1
297 REVERT
298 JUMPDEST
299 PUSH2 0x0140
302 PUSH1 0x04
304 DUP1
305 DUP1
306 CALLDATALOAD
307 SWAP1
308 PUSH1 0x20
310 ADD
311 SWAP1
312 SWAP2
313 SWAP1
314 POP
315 POP
316 PUSH2 0x01ed
319 JUMP
320 JUMPDEST
321 STOP
322 JUMPDEST
323 CALLVALUE
324 ISZERO
325 PUSH2 0x014d
328 JUMPI
329 PUSH1 0x00
331 DUP1
332 REVERT
333 JUMPDEST
334 PUSH2 0x0155
337 PUSH2 0x0202
340 JUMP
341 JUMPDEST
342 STOP
343 JUMPDEST
344 CALLVALUE
345 ISZERO
346 PUSH2 0x0162
349 JUMPI
350 PUSH1 0x00
352 DUP1
353 REVERT
354 JUMPDEST
355 PUSH2 0x0178
358 PUSH1 0x04
360 DUP1
361 DUP1
362 CALLDATALOAD
363 SWAP1
364 PUSH1 0x20
366 ADD
367 SWAP1
368 SWAP2
369 SWAP1
370 POP
371 POP
372 PUSH2 0x0217
375 JUMP
376 JUMPDEST
377 STOP
378 JUMPDEST
379 CALLVALUE
380 ISZERO
381 PUSH2 0x0185
384 JUMPI
385 PUSH1 0x00
387 DUP1
388 REVERT
389 JUMPDEST
390 PUSH2 0x018d
393 PUSH2 0x0235
396 JUMP
397 JUMPDEST
398 STOP
399 JUMPDEST
400 PUSH1 0x00
402 PUSH1 0x08
404 DUP3
405 LT
406 ISZERO
407 PUSH2 0x01ae
410 JUMPI
411 PUSH1 0x00
413 DUP3
414 PUSH1 0x08
416 DUP2
417 LT
418 ISZERO
419 ISZERO
420 PUSH2 0x01a9
423 JUMPI
424 ASSERT_FAIL
425 JUMPDEST
426 ADD
427 SLOAD
428 SWAP1
429 POP
430 JUMPDEST
431 POP
432 POP
433 JUMP
434 JUMPDEST
435 PUSH1 0x17
437 DUP2
438 EQ
439 ISZERO
440 ISZERO
441 ISZERO
442 PUSH2 0x01bf
445 JUMPI
446 ASSERT_FAIL
447 JUMPDEST
448 POP
449 JUMP
450 JUMPDEST
451 PUSH1 0x17
453 DUP2
454 EQ
455 ISZERO
456 ISZERO
457 ISZERO
458 PUSH2 0x01d2
461 JUMPI
462 PUSH1 0x00
464 DUP1
465 REVERT
466 JUMPDEST
467 POP
468 JUMP
469 JUMPDEST
470 PUSH1 0x00
472 DUP1
473 DUP3
474 PUSH1 0x08
476 DUP2
477 LT
478 ISZERO
479 ISZERO
480 PUSH2 0x01e5
483 JUMPI
484 ASSERT_FAIL
485 JUMPDEST
486 ADD
487 SLOAD
488 SWAP1
489 POP
490 POP
491 POP
492 JUMP
493 JUMPDEST
494 PUSH1 0x00
496 DUP2
497 PUSH1 0x01
499 DUP2
500 ISZERO
501 ISZERO
502 PUSH2 0x01fb
505 JUMPI
506 ASSERT_FAIL
507 JUMPDEST
508 DIV
509 SWAP1
510 POP
511 POP
512 POP
513 JUMP
514 JUMPDEST
515 PUSH1 0x00
517 PUSH1 0x01
519 SWAP1
520 POP
521 PUSH1 0x00
523 DUP2
524 EQ
525 ISZERO
526 ISZERO
527 PUSH2 0x0214
530 JUMPI
531 ASSERT_FAIL
532 JUMPDEST
533 POP
534 JUMP
535 JUMPDEST
536 PUSH1 0x00
538 DUP1
539 DUP3
540 GT
541 ISZERO
542 PUSH2 0x0231
545 JUMPI
546 DUP2
547 PUSH1 0x01
549 DUP2
550 ISZERO
551 ISZERO
552 PUSH2 0x022d
555 JUMPI
556 ASSERT_FAIL
557 JUMPDEST
558 DIV
559 SWAP1
560 POP
561 JUMPDEST
562 POP
563 POP
564 JUMP
565 JUMPDEST
566 PUSH1 0x00
568 PUSH1 0x01
570 SWAP1
571 POP
572 PUSH1 0x00
574 DUP2
575 GT
576 ISZERO
577 ISZERO
578 PUSH2 0x0247
581 JUMPI
582 ASSERT_FAIL
583 JUMPDEST
584 POP
585 JUMP
586 STOP

File diff suppressed because one or more lines are too long

@ -1 +0,0 @@
{"error": null, "issues": [{"address": 446, "contract": "Unknown", "debug": "<DEBUG-DATA>", "description": "A reachable exception (opcode 0xfe) has been detected. This can be caused by type errors, division by zero, out-of-bounds array access, or assert violations. Note that explicit `assert()` should only be used to check invariants. Use `require()` for regular input checking. ", "function": "_function_0x546455b5", "swc_id": "110", "title": "Exception state", "type": "Informational"}, {"address": 484, "contract": "Unknown", "debug": "<DEBUG-DATA>", "description": "A reachable exception (opcode 0xfe) has been detected. This can be caused by type errors, division by zero, out-of-bounds array access, or assert violations. Note that explicit `assert()` should only be used to check invariants. Use `require()` for regular input checking. ", "function": "_function_0x92dd38ea", "swc_id": "110", "title": "Exception state", "type": "Informational"}, {"address": 506, "contract": "Unknown", "debug": "<DEBUG-DATA>", "description": "A reachable exception (opcode 0xfe) has been detected. This can be caused by type errors, division by zero, out-of-bounds array access, or assert violations. Note that explicit `assert()` should only be used to check invariants. Use `require()` for regular input checking. ", "function": "_function_0xa08299f1", "swc_id": "110", "title": "Exception state", "type": "Informational"}, {"address": 531, "contract": "Unknown", "debug": "<DEBUG-DATA>", "description": "A reachable exception (opcode 0xfe) has been detected. This can be caused by type errors, division by zero, out-of-bounds array access, or assert violations. Note that explicit `assert()` should only be used to check invariants. Use `require()` for regular input checking. ", "function": "_function_0xb34c3610", "swc_id": "110", "title": "Exception state", "type": "Informational"}], "success": true}

@ -1,45 +0,0 @@
# Analysis results for test-filename.sol
## Exception state
- SWC ID: 110
- Type: Informational
- Contract: Unknown
- Function name: `_function_0x546455b5`
- PC address: 446
### Description
A reachable exception (opcode 0xfe) has been detected. This can be caused by type errors, division by zero, out-of-bounds array access, or assert violations. Note that explicit `assert()` should only be used to check invariants. Use `require()` for regular input checking.
## Exception state
- SWC ID: 110
- Type: Informational
- Contract: Unknown
- Function name: `_function_0x92dd38ea`
- PC address: 484
### Description
A reachable exception (opcode 0xfe) has been detected. This can be caused by type errors, division by zero, out-of-bounds array access, or assert violations. Note that explicit `assert()` should only be used to check invariants. Use `require()` for regular input checking.
## Exception state
- SWC ID: 110
- Type: Informational
- Contract: Unknown
- Function name: `_function_0xa08299f1`
- PC address: 506
### Description
A reachable exception (opcode 0xfe) has been detected. This can be caused by type errors, division by zero, out-of-bounds array access, or assert violations. Note that explicit `assert()` should only be used to check invariants. Use `require()` for regular input checking.
## Exception state
- SWC ID: 110
- Type: Informational
- Contract: Unknown
- Function name: `_function_0xb34c3610`
- PC address: 531
### Description
A reachable exception (opcode 0xfe) has been detected. This can be caused by type errors, division by zero, out-of-bounds array access, or assert violations. Note that explicit `assert()` should only be used to check invariants. Use `require()` for regular input checking.

@ -1,36 +0,0 @@
==== Exception state ====
SWC ID: 110
Type: Informational
Contract: Unknown
Function name: _function_0x546455b5
PC address: 446
A reachable exception (opcode 0xfe) has been detected. This can be caused by type errors, division by zero, out-of-bounds array access, or assert violations. Note that explicit `assert()` should only be used to check invariants. Use `require()` for regular input checking.
--------------------
==== Exception state ====
SWC ID: 110
Type: Informational
Contract: Unknown
Function name: _function_0x92dd38ea
PC address: 484
A reachable exception (opcode 0xfe) has been detected. This can be caused by type errors, division by zero, out-of-bounds array access, or assert violations. Note that explicit `assert()` should only be used to check invariants. Use `require()` for regular input checking.
--------------------
==== Exception state ====
SWC ID: 110
Type: Informational
Contract: Unknown
Function name: _function_0xa08299f1
PC address: 506
A reachable exception (opcode 0xfe) has been detected. This can be caused by type errors, division by zero, out-of-bounds array access, or assert violations. Note that explicit `assert()` should only be used to check invariants. Use `require()` for regular input checking.
--------------------
==== Exception state ====
SWC ID: 110
Type: Informational
Contract: Unknown
Function name: _function_0xb34c3610
PC address: 531
A reachable exception (opcode 0xfe) has been detected. This can be caused by type errors, division by zero, out-of-bounds array access, or assert violations. Note that explicit `assert()` should only be used to check invariants. Use `require()` for regular input checking.
--------------------

@ -1,435 +0,0 @@
0 PUSH1 0x60
2 PUSH1 0x40
4 MSTORE
5 PUSH1 0x04
7 CALLDATASIZE
8 LT
9 PUSH2 0x006d
12 JUMPI
13 PUSH1 0x00
15 CALLDATALOAD
16 PUSH29 0x0100000000000000000000000000000000000000000000000000000000
46 SWAP1
47 DIV
48 PUSH4 0xffffffff
53 AND
54 DUP1
55 PUSH4 0x141f32ff
60 EQ
61 PUSH2 0x0072
64 JUMPI
65 DUP1
66 PUSH4 0x2e52d606
71 EQ
72 PUSH2 0x00b4
75 JUMPI
76 DUP1
77 PUSH4 0x67e404ce
82 EQ
83 PUSH2 0x00dd
86 JUMPI
87 DUP1
88 PUSH4 0x9b58bc26
93 EQ
94 PUSH2 0x0132
97 JUMPI
98 DUP1
99 PUSH4 0xeea4c864
104 EQ
105 PUSH2 0x0174
108 JUMPI
109 JUMPDEST
110 PUSH1 0x00
112 DUP1
113 REVERT
114 JUMPDEST
115 CALLVALUE
116 ISZERO
117 PUSH2 0x007d
120 JUMPI
121 PUSH1 0x00
123 DUP1
124 REVERT
125 JUMPDEST
126 PUSH2 0x00b2
129 PUSH1 0x04
131 DUP1
132 DUP1
133 CALLDATALOAD
134 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
155 AND
156 SWAP1
157 PUSH1 0x20
159 ADD
160 SWAP1
161 SWAP2
162 SWAP1
163 DUP1
164 CALLDATALOAD
165 SWAP1
166 PUSH1 0x20
168 ADD
169 SWAP1
170 SWAP2
171 SWAP1
172 POP
173 POP
174 PUSH2 0x01b6
177 JUMP
178 JUMPDEST
179 STOP
180 JUMPDEST
181 CALLVALUE
182 ISZERO
183 PUSH2 0x00bf
186 JUMPI
187 PUSH1 0x00
189 DUP1
190 REVERT
191 JUMPDEST
192 PUSH2 0x00c7
195 PUSH2 0x0273
198 JUMP
199 JUMPDEST
200 PUSH1 0x40
202 MLOAD
203 DUP1
204 DUP3
205 DUP2
206 MSTORE
207 PUSH1 0x20
209 ADD
210 SWAP2
211 POP
212 POP
213 PUSH1 0x40
215 MLOAD
216 DUP1
217 SWAP2
218 SUB
219 SWAP1
220 RETURN
221 JUMPDEST
222 CALLVALUE
223 ISZERO
224 PUSH2 0x00e8
227 JUMPI
228 PUSH1 0x00
230 DUP1
231 REVERT
232 JUMPDEST
233 PUSH2 0x00f0
236 PUSH2 0x0279
239 JUMP
240 JUMPDEST
241 PUSH1 0x40
243 MLOAD
244 DUP1
245 DUP3
246 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
267 AND
268 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
289 AND
290 DUP2
291 MSTORE
292 PUSH1 0x20
294 ADD
295 SWAP2
296 POP
297 POP
298 PUSH1 0x40
300 MLOAD
301 DUP1
302 SWAP2
303 SUB
304 SWAP1
305 RETURN
306 JUMPDEST
307 CALLVALUE
308 ISZERO
309 PUSH2 0x013d
312 JUMPI
313 PUSH1 0x00
315 DUP1
316 REVERT
317 JUMPDEST
318 PUSH2 0x0172
321 PUSH1 0x04
323 DUP1
324 DUP1
325 CALLDATALOAD
326 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
347 AND
348 SWAP1
349 PUSH1 0x20
351 ADD
352 SWAP1
353 SWAP2
354 SWAP1
355 DUP1
356 CALLDATALOAD
357 SWAP1
358 PUSH1 0x20
360 ADD
361 SWAP1
362 SWAP2
363 SWAP1
364 POP
365 POP
366 PUSH2 0x029f
369 JUMP
370 JUMPDEST
371 STOP
372 JUMPDEST
373 CALLVALUE
374 ISZERO
375 PUSH2 0x017f
378 JUMPI
379 PUSH1 0x00
381 DUP1
382 REVERT
383 JUMPDEST
384 PUSH2 0x01b4
387 PUSH1 0x04
389 DUP1
390 DUP1
391 CALLDATALOAD
392 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
413 AND
414 SWAP1
415 PUSH1 0x20
417 ADD
418 SWAP1
419 SWAP2
420 SWAP1
421 DUP1
422 CALLDATALOAD
423 SWAP1
424 PUSH1 0x20
426 ADD
427 SWAP1
428 SWAP2
429 SWAP1
430 POP
431 POP
432 PUSH2 0x035a
435 JUMP
436 JUMPDEST
437 STOP
438 JUMPDEST
439 DUP2
440 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
461 AND
462 PUSH1 0x40
464 MLOAD
465 DUP1
466 DUP1
467 PUSH32 0x7365744e2875696e743235362900000000000000000000000000000000000000
500 DUP2
501 MSTORE
502 POP
503 PUSH1 0x0d
505 ADD
506 SWAP1
507 POP
508 PUSH1 0x40
510 MLOAD
511 DUP1
512 SWAP2
513 SUB
514 SWAP1
515 SHA3
516 PUSH29 0x0100000000000000000000000000000000000000000000000000000000
546 SWAP1
547 DIV
548 DUP3
549 PUSH1 0x40
551 MLOAD
552 DUP3
553 PUSH4 0xffffffff
558 AND
559 PUSH29 0x0100000000000000000000000000000000000000000000000000000000
589 MUL
590 DUP2
591 MSTORE
592 PUSH1 0x04
594 ADD
595 DUP1
596 DUP3
597 DUP2
598 MSTORE
599 PUSH1 0x20
601 ADD
602 SWAP2
603 POP
604 POP
605 PUSH1 0x00
607 PUSH1 0x40
609 MLOAD
610 DUP1
611 DUP4
612 SUB
613 DUP2
614 PUSH1 0x00
616 DUP8
617 GAS
618 CALLCODE
619 SWAP3
620 POP
621 POP
622 POP
623 POP
624 POP
625 POP
626 JUMP
627 JUMPDEST
628 PUSH1 0x00
630 SLOAD
631 DUP2
632 JUMP
633 JUMPDEST
634 PUSH1 0x01
636 PUSH1 0x00
638 SWAP1
639 SLOAD
640 SWAP1
641 PUSH2 0x0100
644 EXP
645 SWAP1
646 DIV
647 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
668 AND
669 DUP2
670 JUMP
671 JUMPDEST
672 DUP2
673 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
694 AND
695 PUSH1 0x40
697 MLOAD
698 DUP1
699 DUP1
700 PUSH32 0x7365744e2875696e743235362900000000000000000000000000000000000000
733 DUP2
734 MSTORE
735 POP
736 PUSH1 0x0d
738 ADD
739 SWAP1
740 POP
741 PUSH1 0x40
743 MLOAD
744 DUP1
745 SWAP2
746 SUB
747 SWAP1
748 SHA3
749 PUSH29 0x0100000000000000000000000000000000000000000000000000000000
779 SWAP1
780 DIV
781 DUP3
782 PUSH1 0x40
784 MLOAD
785 DUP3
786 PUSH4 0xffffffff
791 AND
792 PUSH29 0x0100000000000000000000000000000000000000000000000000000000
822 MUL
823 DUP2
824 MSTORE
825 PUSH1 0x04
827 ADD
828 DUP1
829 DUP3
830 DUP2
831 MSTORE
832 PUSH1 0x20
834 ADD
835 SWAP2
836 POP
837 POP
838 PUSH1 0x00
840 PUSH1 0x40
842 MLOAD
843 DUP1
844 DUP4
845 SUB
846 DUP2
847 DUP7
848 GAS
849 DELEGATECALL
850 SWAP3
851 POP
852 POP
853 POP
854 POP
855 POP
856 POP
857 JUMP
858 JUMPDEST
859 DUP2
860 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
881 AND
882 PUSH1 0x40
884 MLOAD
885 DUP1
886 DUP1
887 PUSH32 0x7365744e2875696e743235362900000000000000000000000000000000000000
920 DUP2
921 MSTORE
922 POP
923 PUSH1 0x0d
925 ADD
926 SWAP1
927 POP
928 PUSH1 0x40
930 MLOAD
931 DUP1
932 SWAP2
933 SUB
934 SWAP1
935 SHA3
936 PUSH29 0x0100000000000000000000000000000000000000000000000000000000
966 SWAP1
967 DIV
968 DUP3
969 PUSH1 0x40
971 MLOAD
972 DUP3
973 PUSH4 0xffffffff
978 AND
979 PUSH29 0x0100000000000000000000000000000000000000000000000000000000
1009 MUL
1010 DUP2
1011 MSTORE
1012 PUSH1 0x04
1014 ADD
1015 DUP1
1016 DUP3
1017 DUP2
1018 MSTORE
1019 PUSH1 0x20
1021 ADD
1022 SWAP2
1023 POP
1024 POP
1025 PUSH1 0x00
1027 PUSH1 0x40
1029 MLOAD
1030 DUP1
1031 DUP4
1032 SUB
1033 DUP2
1034 PUSH1 0x00
1036 DUP8
1037 GAS
1038 CALL
1039 SWAP3
1040 POP
1041 POP
1042 POP
1043 POP
1044 POP
1045 POP
1046 JUMP
1047 STOP

File diff suppressed because one or more lines are too long

@ -1 +0,0 @@
{"error": null, "issues": [{"address": 626, "contract": "Unknown", "debug": "<DEBUG-DATA>", "description": "The return value of an external call is not checked. Note that execution continue even if the called contract throws.", "function": "_function_0x141f32ff", "swc_id": "104", "title": "Unchecked CALL return value", "type": "Informational"}, {"address": 857, "contract": "Unknown", "debug": "<DEBUG-DATA>", "description": "The return value of an external call is not checked. Note that execution continue even if the called contract throws.", "function": "_function_0x9b58bc26", "swc_id": "104", "title": "Unchecked CALL return value", "type": "Informational"}, {"address": 1038, "contract": "Unknown", "debug": "<DEBUG-DATA>", "description": "This contract executes a message call to an address provided as a function argument. Generally, it is not recommended to call user-supplied addresses using Solidity's call() construct. Note that attackers might leverage reentrancy attacks to exploit race conditions or manipulate this contract's state.", "function": "_function_0xeea4c864", "swc_id": "107", "title": "Message call to external contract", "type": "Warning"}, {"address": 1046, "contract": "Unknown", "debug": "<DEBUG-DATA>", "description": "The return value of an external call is not checked. Note that execution continue even if the called contract throws.", "function": "_function_0xeea4c864", "swc_id": "104", "title": "Unchecked CALL return value", "type": "Informational"}], "success": true}

@ -1,45 +0,0 @@
# Analysis results for test-filename.sol
## Unchecked CALL return value
- SWC ID: 104
- Type: Informational
- Contract: Unknown
- Function name: `_function_0x141f32ff`
- PC address: 626
### Description
The return value of an external call is not checked. Note that execution continue even if the called contract throws.
## Unchecked CALL return value
- SWC ID: 104
- Type: Informational
- Contract: Unknown
- Function name: `_function_0x9b58bc26`
- PC address: 857
### Description
The return value of an external call is not checked. Note that execution continue even if the called contract throws.
## Message call to external contract
- SWC ID: 107
- Type: Warning
- Contract: Unknown
- Function name: `_function_0xeea4c864`
- PC address: 1038
### Description
This contract executes a message call to an address provided as a function argument. Generally, it is not recommended to call user-supplied addresses using Solidity's call() construct. Note that attackers might leverage reentrancy attacks to exploit race conditions or manipulate this contract's state.
## Unchecked CALL return value
- SWC ID: 104
- Type: Informational
- Contract: Unknown
- Function name: `_function_0xeea4c864`
- PC address: 1046
### Description
The return value of an external call is not checked. Note that execution continue even if the called contract throws.

@ -1,36 +0,0 @@
==== Unchecked CALL return value ====
SWC ID: 104
Type: Informational
Contract: Unknown
Function name: _function_0x141f32ff
PC address: 626
The return value of an external call is not checked. Note that execution continue even if the called contract throws.
--------------------
==== Unchecked CALL return value ====
SWC ID: 104
Type: Informational
Contract: Unknown
Function name: _function_0x9b58bc26
PC address: 857
The return value of an external call is not checked. Note that execution continue even if the called contract throws.
--------------------
==== Message call to external contract ====
SWC ID: 107
Type: Warning
Contract: Unknown
Function name: _function_0xeea4c864
PC address: 1038
This contract executes a message call to an address provided as a function argument. Generally, it is not recommended to call user-supplied addresses using Solidity's call() construct. Note that attackers might leverage reentrancy attacks to exploit race conditions or manipulate this contract's state.
--------------------
==== Unchecked CALL return value ====
SWC ID: 104
Type: Informational
Contract: Unknown
Function name: _function_0xeea4c864
PC address: 1046
The return value of an external call is not checked. Note that execution continue even if the called contract throws.
--------------------

@ -1,253 +0,0 @@
0 PUSH1 0x60
2 PUSH1 0x40
4 MSTORE
5 PUSH1 0x04
7 CALLDATASIZE
8 LT
9 PUSH2 0x004c
12 JUMPI
13 PUSH1 0x00
15 CALLDATALOAD
16 PUSH29 0x0100000000000000000000000000000000000000000000000000000000
46 SWAP1
47 DIV
48 PUSH4 0xffffffff
53 AND
54 DUP1
55 PUSH4 0x27e235e3
60 EQ
61 PUSH2 0x0051
64 JUMPI
65 DUP1
66 PUSH4 0x412664ae
71 EQ
72 PUSH2 0x009e
75 JUMPI
76 JUMPDEST
77 PUSH1 0x00
79 DUP1
80 REVERT
81 JUMPDEST
82 CALLVALUE
83 ISZERO
84 PUSH2 0x005c
87 JUMPI
88 PUSH1 0x00
90 DUP1
91 REVERT
92 JUMPDEST
93 PUSH2 0x0088
96 PUSH1 0x04
98 DUP1
99 DUP1
100 CALLDATALOAD
101 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
122 AND
123 SWAP1
124 PUSH1 0x20
126 ADD
127 SWAP1
128 SWAP2
129 SWAP1
130 POP
131 POP
132 PUSH2 0x00f8
135 JUMP
136 JUMPDEST
137 PUSH1 0x40
139 MLOAD
140 DUP1
141 DUP3
142 DUP2
143 MSTORE
144 PUSH1 0x20
146 ADD
147 SWAP2
148 POP
149 POP
150 PUSH1 0x40
152 MLOAD
153 DUP1
154 SWAP2
155 SUB
156 SWAP1
157 RETURN
158 JUMPDEST
159 CALLVALUE
160 ISZERO
161 PUSH2 0x00a9
164 JUMPI
165 PUSH1 0x00
167 DUP1
168 REVERT
169 JUMPDEST
170 PUSH2 0x00de
173 PUSH1 0x04
175 DUP1
176 DUP1
177 CALLDATALOAD
178 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
199 AND
200 SWAP1
201 PUSH1 0x20
203 ADD
204 SWAP1
205 SWAP2
206 SWAP1
207 DUP1
208 CALLDATALOAD
209 SWAP1
210 PUSH1 0x20
212 ADD
213 SWAP1
214 SWAP2
215 SWAP1
216 POP
217 POP
218 PUSH2 0x0110
221 JUMP
222 JUMPDEST
223 PUSH1 0x40
225 MLOAD
226 DUP1
227 DUP3
228 ISZERO
229 ISZERO
230 ISZERO
231 ISZERO
232 DUP2
233 MSTORE
234 PUSH1 0x20
236 ADD
237 SWAP2
238 POP
239 POP
240 PUSH1 0x40
242 MLOAD
243 DUP1
244 SWAP2
245 SUB
246 SWAP1
247 RETURN
248 JUMPDEST
249 PUSH1 0x00
251 PUSH1 0x20
253 MSTORE
254 DUP1
255 PUSH1 0x00
257 MSTORE
258 PUSH1 0x40
260 PUSH1 0x00
262 SHA3
263 PUSH1 0x00
265 SWAP2
266 POP
267 SWAP1
268 POP
269 SLOAD
270 DUP2
271 JUMP
272 JUMPDEST
273 PUSH1 0x00
275 DUP2
276 PUSH1 0x00
278 DUP1
279 CALLER
280 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
301 AND
302 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
323 AND
324 DUP2
325 MSTORE
326 PUSH1 0x20
328 ADD
329 SWAP1
330 DUP2
331 MSTORE
332 PUSH1 0x20
334 ADD
335 PUSH1 0x00
337 SHA3
338 SLOAD
339 LT
340 ISZERO
341 PUSH2 0x0161
344 JUMPI
345 PUSH1 0x00
347 SWAP1
348 POP
349 PUSH2 0x01fe
352 JUMP
353 JUMPDEST
354 DUP2
355 PUSH1 0x00
357 DUP1
358 CALLER
359 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
380 AND
381 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
402 AND
403 DUP2
404 MSTORE
405 PUSH1 0x20
407 ADD
408 SWAP1
409 DUP2
410 MSTORE
411 PUSH1 0x20
413 ADD
414 PUSH1 0x00
416 SHA3
417 PUSH1 0x00
419 DUP3
420 DUP3
421 SLOAD
422 SUB
423 SWAP3
424 POP
425 POP
426 DUP2
427 SWAP1
428 SSTORE
429 POP
430 DUP2
431 PUSH1 0x00
433 DUP1
434 DUP6
435 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
456 AND
457 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
478 AND
479 DUP2
480 MSTORE
481 PUSH1 0x20
483 ADD
484 SWAP1
485 DUP2
486 MSTORE
487 PUSH1 0x20
489 ADD
490 PUSH1 0x00
492 SHA3
493 PUSH1 0x00
495 DUP3
496 DUP3
497 SLOAD
498 ADD
499 SWAP3
500 POP
501 POP
502 DUP2
503 SWAP1
504 SSTORE
505 POP
506 PUSH1 0x00
508 SWAP1
509 POP
510 JUMPDEST
511 SWAP3
512 SWAP2
513 POP
514 POP
515 JUMP
516 STOP

File diff suppressed because one or more lines are too long

@ -1 +0,0 @@
{"error": null, "issues": [], "success": true}

@ -1,3 +0,0 @@
# Analysis results for None
The analysis was completed successfully. No issues were detected.

@ -1 +0,0 @@
The analysis was completed successfully. No issues were detected.

@ -1,77 +0,0 @@
0 PUSH1 0x60
2 PUSH1 0x40
4 MSTORE
5 PUSH1 0x04
7 CALLDATASIZE
8 LT
9 PUSH1 0x3f
11 JUMPI
12 PUSH1 0x00
14 CALLDATALOAD
15 PUSH29 0x0100000000000000000000000000000000000000000000000000000000
45 SWAP1
46 DIV
47 PUSH4 0xffffffff
52 AND
53 DUP1
54 PUSH4 0x8a4068dd
59 EQ
60 PUSH1 0x44
62 JUMPI
63 JUMPDEST
64 PUSH1 0x00
66 DUP1
67 REVERT
68 JUMPDEST
69 CALLVALUE
70 ISZERO
71 PUSH1 0x4e
73 JUMPI
74 PUSH1 0x00
76 DUP1
77 REVERT
78 JUMPDEST
79 PUSH1 0x54
81 PUSH1 0x56
83 JUMP
84 JUMPDEST
85 STOP
86 JUMPDEST
87 CALLER
88 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
109 AND
110 PUSH2 0x08fc
113 PUSH8 0x1bc16d674ec80000
122 SWAP1
123 DUP2
124 ISZERO
125 MUL
126 SWAP1
127 PUSH1 0x40
129 MLOAD
130 PUSH1 0x00
132 PUSH1 0x40
134 MLOAD
135 DUP1
136 DUP4
137 SUB
138 DUP2
139 DUP6
140 DUP9
141 DUP9
142 CALL
143 SWAP4
144 POP
145 POP
146 POP
147 POP
148 ISZERO
149 ISZERO
150 PUSH1 0x9d
152 JUMPI
153 PUSH1 0x00
155 DUP1
156 REVERT
157 JUMPDEST
158 JUMP
159 STOP

File diff suppressed because one or more lines are too long

@ -1 +0,0 @@
{"error": null, "issues": [{"address": 142, "contract": "Unknown", "debug": "<DEBUG-DATA>", "description": "It seems that an attacker is able to execute an call instruction, this can mean that the attacker is able to extract funds out of the contract.", "function": "_function_0x8a4068dd", "swc_id": "105", "title": "Ether send", "type": "Warning"}], "success": true}

@ -1,12 +0,0 @@
# Analysis results for test-filename.sol
## Ether send
- SWC ID: 105
- Type: Warning
- Contract: Unknown
- Function name: `_function_0x8a4068dd`
- PC address: 142
### Description
It seems that an attacker is able to execute an call instruction, this can mean that the attacker is able to extract funds out of the contract.

@ -1,9 +0,0 @@
==== Ether send ====
SWC ID: 105
Type: Warning
Contract: Unknown
Function name: _function_0x8a4068dd
PC address: 142
It seems that an attacker is able to execute an call instruction, this can mean that the attacker is able to extract funds out of the contract.
--------------------

@ -1,167 +0,0 @@
0 PUSH1 0x80
2 PUSH1 0x40
4 MSTORE
5 PUSH1 0x04
7 CALLDATASIZE
8 LT
9 PUSH2 0x0041
12 JUMPI
13 PUSH1 0x00
15 CALLDATALOAD
16 PUSH29 0x0100000000000000000000000000000000000000000000000000000000
46 SWAP1
47 DIV
48 PUSH4 0xffffffff
53 AND
54 DUP1
55 PUSH4 0x24ff38a2
60 EQ
61 PUSH2 0x0046
64 JUMPI
65 JUMPDEST
66 PUSH1 0x00
68 DUP1
69 REVERT
70 JUMPDEST
71 CALLVALUE
72 DUP1
73 ISZERO
74 PUSH2 0x0052
77 JUMPI
78 PUSH1 0x00
80 DUP1
81 REVERT
82 JUMPDEST
83 POP
84 PUSH2 0x005b
87 PUSH2 0x00d6
90 JUMP
91 JUMPDEST
92 PUSH1 0x40
94 MLOAD
95 DUP1
96 DUP1
97 PUSH1 0x20
99 ADD
100 DUP3
101 DUP2
102 SUB
103 DUP3
104 MSTORE
105 DUP4
106 DUP2
107 DUP2
108 MLOAD
109 DUP2
110 MSTORE
111 PUSH1 0x20
113 ADD
114 SWAP2
115 POP
116 DUP1
117 MLOAD
118 SWAP1
119 PUSH1 0x20
121 ADD
122 SWAP1
123 DUP1
124 DUP4
125 DUP4
126 PUSH1 0x00
128 JUMPDEST
129 DUP4
130 DUP2
131 LT
132 ISZERO
133 PUSH2 0x009b
136 JUMPI
137 DUP1
138 DUP3
139 ADD
140 MLOAD
141 DUP2
142 DUP5
143 ADD
144 MSTORE
145 PUSH1 0x20
147 DUP2
148 ADD
149 SWAP1
150 POP
151 PUSH2 0x0080
154 JUMP
155 JUMPDEST
156 POP
157 POP
158 POP
159 POP
160 SWAP1
161 POP
162 SWAP1
163 DUP2
164 ADD
165 SWAP1
166 PUSH1 0x1f
168 AND
169 DUP1
170 ISZERO
171 PUSH2 0x00c8
174 JUMPI
175 DUP1
176 DUP3
177 SUB
178 DUP1
179 MLOAD
180 PUSH1 0x01
182 DUP4
183 PUSH1 0x20
185 SUB
186 PUSH2 0x0100
189 EXP
190 SUB
191 NOT
192 AND
193 DUP2
194 MSTORE
195 PUSH1 0x20
197 ADD
198 SWAP2
199 POP
200 JUMPDEST
201 POP
202 SWAP3
203 POP
204 POP
205 POP
206 PUSH1 0x40
208 MLOAD
209 DUP1
210 SWAP2
211 SUB
212 SWAP1
213 RETURN
214 JUMPDEST
215 PUSH1 0x60
217 PUSH1 0x40
219 DUP1
220 MLOAD
221 SWAP1
222 DUP2
223 ADD
224 PUSH1 0x40
226 MSTORE
227 DUP1
228 PUSH1 0x17
230 DUP2
231 MSTORE
232 PUSH1 0x20
234 ADD
235 PUSH32 0xd0a5d18dd0bbd0bbd0bed18320d092d0bed180d0bbd0b4000000000000000000
268 DUP2
269 MSTORE
270 POP
271 SWAP1
272 POP
273 SWAP1
274 JUMP
275 STOP

File diff suppressed because one or more lines are too long

@ -1 +0,0 @@
{"error": null, "issues": [], "success": true}

@ -1,3 +0,0 @@
# Analysis results for None
The analysis was completed successfully. No issues were detected.

@ -1 +0,0 @@
The analysis was completed successfully. No issues were detected.

@ -1,168 +0,0 @@
0 PUSH1 0x60
2 PUSH1 0x40
4 MSTORE
5 PUSH1 0x04
7 CALLDATASIZE
8 LT
9 PUSH2 0x004c
12 JUMPI
13 PUSH1 0x00
15 CALLDATALOAD
16 PUSH29 0x0100000000000000000000000000000000000000000000000000000000
46 SWAP1
47 DIV
48 PUSH4 0xffffffff
53 AND
54 DUP1
55 PUSH4 0x8da5cb5b
60 EQ
61 PUSH2 0x0051
64 JUMPI
65 DUP1
66 PUSH4 0xf2fde38b
71 EQ
72 PUSH2 0x00a6
75 JUMPI
76 JUMPDEST
77 PUSH1 0x00
79 DUP1
80 REVERT
81 JUMPDEST
82 CALLVALUE
83 ISZERO
84 PUSH2 0x005c
87 JUMPI
88 PUSH1 0x00
90 DUP1
91 REVERT
92 JUMPDEST
93 PUSH2 0x0064
96 PUSH2 0x00df
99 JUMP
100 JUMPDEST
101 PUSH1 0x40
103 MLOAD
104 DUP1
105 DUP3
106 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
127 AND
128 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
149 AND
150 DUP2
151 MSTORE
152 PUSH1 0x20
154 ADD
155 SWAP2
156 POP
157 POP
158 PUSH1 0x40
160 MLOAD
161 DUP1
162 SWAP2
163 SUB
164 SWAP1
165 RETURN
166 JUMPDEST
167 CALLVALUE
168 ISZERO
169 PUSH2 0x00b1
172 JUMPI
173 PUSH1 0x00
175 DUP1
176 REVERT
177 JUMPDEST
178 PUSH2 0x00dd
181 PUSH1 0x04
183 DUP1
184 DUP1
185 CALLDATALOAD
186 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
207 AND
208 SWAP1
209 PUSH1 0x20
211 ADD
212 SWAP1
213 SWAP2
214 SWAP1
215 POP
216 POP
217 PUSH2 0x0104
220 JUMP
221 JUMPDEST
222 STOP
223 JUMPDEST
224 PUSH1 0x00
226 DUP1
227 SWAP1
228 SLOAD
229 SWAP1
230 PUSH2 0x0100
233 EXP
234 SWAP1
235 DIV
236 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
257 AND
258 DUP2
259 JUMP
260 JUMPDEST
261 PUSH1 0x00
263 DUP1
264 SWAP1
265 SLOAD
266 SWAP1
267 PUSH2 0x0100
270 EXP
271 SWAP1
272 DIV
273 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
294 AND
295 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
316 AND
317 ORIGIN
318 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
339 AND
340 EQ
341 ISZERO
342 ISZERO
343 PUSH2 0x015f
346 JUMPI
347 PUSH1 0x00
349 DUP1
350 REVERT
351 JUMPDEST
352 PUSH1 0x00
354 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
375 AND
376 DUP2
377 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
398 AND
399 EQ
400 ISZERO
401 ISZERO
402 PUSH2 0x01d6
405 JUMPI
406 DUP1
407 PUSH1 0x00
409 DUP1
410 PUSH2 0x0100
413 EXP
414 DUP2
415 SLOAD
416 DUP2
417 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
438 MUL
439 NOT
440 AND
441 SWAP1
442 DUP4
443 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
464 AND
465 MUL
466 OR
467 SWAP1
468 SSTORE
469 POP
470 JUMPDEST
471 POP
472 JUMP
473 STOP

File diff suppressed because one or more lines are too long

@ -1 +0,0 @@
{"error": null, "issues": [{"address": 317, "contract": "Unknown", "debug": "<DEBUG-DATA>", "description": "The function `transferOwnership(address)` retrieves the transaction origin (tx.origin) using the ORIGIN opcode. Use msg.sender instead.\nSee also: https://solidity.readthedocs.io/en/develop/security-considerations.html#tx-origin", "function": "transferOwnership(address)", "swc_id": "115", "title": "Use of tx.origin", "type": "Warning"}], "success": true}

@ -1,13 +0,0 @@
# Analysis results for test-filename.sol
## Use of tx.origin
- SWC ID: 115
- Type: Warning
- Contract: Unknown
- Function name: `transferOwnership(address)`
- PC address: 317
### Description
The function `transferOwnership(address)` retrieves the transaction origin (tx.origin) using the ORIGIN opcode. Use msg.sender instead.
See also: https://solidity.readthedocs.io/en/develop/security-considerations.html#tx-origin

@ -1,10 +0,0 @@
==== Use of tx.origin ====
SWC ID: 115
Type: Warning
Contract: Unknown
Function name: transferOwnership(address)
PC address: 317
The function `transferOwnership(address)` retrieves the transaction origin (tx.origin) using the ORIGIN opcode. Use msg.sender instead.
See also: https://solidity.readthedocs.io/en/develop/security-considerations.html#tx-origin
--------------------

@ -1,388 +0,0 @@
0 PUSH1 0x60
2 PUSH1 0x40
4 MSTORE
5 PUSH1 0x04
7 CALLDATASIZE
8 LT
9 PUSH2 0x0062
12 JUMPI
13 PUSH1 0x00
15 CALLDATALOAD
16 PUSH29 0x0100000000000000000000000000000000000000000000000000000000
46 SWAP1
47 DIV
48 PUSH4 0xffffffff
53 AND
54 DUP1
55 PUSH4 0x18160ddd
60 EQ
61 PUSH2 0x0067
64 JUMPI
65 DUP1
66 PUSH4 0x6241bfd1
71 EQ
72 PUSH2 0x0090
75 JUMPI
76 DUP1
77 PUSH4 0x70a08231
82 EQ
83 PUSH2 0x00b3
86 JUMPI
87 DUP1
88 PUSH4 0xa3210e87
93 EQ
94 PUSH2 0x0100
97 JUMPI
98 JUMPDEST
99 PUSH1 0x00
101 DUP1
102 REVERT
103 JUMPDEST
104 CALLVALUE
105 ISZERO
106 PUSH2 0x0072
109 JUMPI
110 PUSH1 0x00
112 DUP1
113 REVERT
114 JUMPDEST
115 PUSH2 0x007a
118 PUSH2 0x015a
121 JUMP
122 JUMPDEST
123 PUSH1 0x40
125 MLOAD
126 DUP1
127 DUP3
128 DUP2
129 MSTORE
130 PUSH1 0x20
132 ADD
133 SWAP2
134 POP
135 POP
136 PUSH1 0x40
138 MLOAD
139 DUP1
140 SWAP2
141 SUB
142 SWAP1
143 RETURN
144 JUMPDEST
145 CALLVALUE
146 ISZERO
147 PUSH2 0x009b
150 JUMPI
151 PUSH1 0x00
153 DUP1
154 REVERT
155 JUMPDEST
156 PUSH2 0x00b1
159 PUSH1 0x04
161 DUP1
162 DUP1
163 CALLDATALOAD
164 SWAP1
165 PUSH1 0x20
167 ADD
168 SWAP1
169 SWAP2
170 SWAP1
171 POP
172 POP
173 PUSH2 0x0160
176 JUMP
177 JUMPDEST
178 STOP
179 JUMPDEST
180 CALLVALUE
181 ISZERO
182 PUSH2 0x00be
185 JUMPI
186 PUSH1 0x00
188 DUP1
189 REVERT
190 JUMPDEST
191 PUSH2 0x00ea
194 PUSH1 0x04
196 DUP1
197 DUP1
198 CALLDATALOAD
199 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
220 AND
221 SWAP1
222 PUSH1 0x20
224 ADD
225 SWAP1
226 SWAP2
227 SWAP1
228 POP
229 POP
230 PUSH2 0x01ab
233 JUMP
234 JUMPDEST
235 PUSH1 0x40
237 MLOAD
238 DUP1
239 DUP3
240 DUP2
241 MSTORE
242 PUSH1 0x20
244 ADD
245 SWAP2
246 POP
247 POP
248 PUSH1 0x40
250 MLOAD
251 DUP1
252 SWAP2
253 SUB
254 SWAP1
255 RETURN
256 JUMPDEST
257 CALLVALUE
258 ISZERO
259 PUSH2 0x010b
262 JUMPI
263 PUSH1 0x00
265 DUP1
266 REVERT
267 JUMPDEST
268 PUSH2 0x0140
271 PUSH1 0x04
273 DUP1
274 DUP1
275 CALLDATALOAD
276 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
297 AND
298 SWAP1
299 PUSH1 0x20
301 ADD
302 SWAP1
303 SWAP2
304 SWAP1
305 DUP1
306 CALLDATALOAD
307 SWAP1
308 PUSH1 0x20
310 ADD
311 SWAP1
312 SWAP2
313 SWAP1
314 POP
315 POP
316 PUSH2 0x01f3
319 JUMP
320 JUMPDEST
321 PUSH1 0x40
323 MLOAD
324 DUP1
325 DUP3
326 ISZERO
327 ISZERO
328 ISZERO
329 ISZERO
330 DUP2
331 MSTORE
332 PUSH1 0x20
334 ADD
335 SWAP2
336 POP
337 POP
338 PUSH1 0x40
340 MLOAD
341 DUP1
342 SWAP2
343 SUB
344 SWAP1
345 RETURN
346 JUMPDEST
347 PUSH1 0x01
349 SLOAD
350 DUP2
351 JUMP
352 JUMPDEST
353 DUP1
354 PUSH1 0x01
356 DUP2
357 SWAP1
358 SSTORE
359 PUSH1 0x00
361 DUP1
362 CALLER
363 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
384 AND
385 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
406 AND
407 DUP2
408 MSTORE
409 PUSH1 0x20
411 ADD
412 SWAP1
413 DUP2
414 MSTORE
415 PUSH1 0x20
417 ADD
418 PUSH1 0x00
420 SHA3
421 DUP2
422 SWAP1
423 SSTORE
424 POP
425 POP
426 JUMP
427 JUMPDEST
428 PUSH1 0x00
430 DUP1
431 PUSH1 0x00
433 DUP4
434 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
455 AND
456 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
477 AND
478 DUP2
479 MSTORE
480 PUSH1 0x20
482 ADD
483 SWAP1
484 DUP2
485 MSTORE
486 PUSH1 0x20
488 ADD
489 PUSH1 0x00
491 SHA3
492 SLOAD
493 SWAP1
494 POP
495 SWAP2
496 SWAP1
497 POP
498 JUMP
499 JUMPDEST
500 PUSH1 0x00
502 DUP1
503 DUP3
504 PUSH1 0x00
506 DUP1
507 CALLER
508 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
529 AND
530 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
551 AND
552 DUP2
553 MSTORE
554 PUSH1 0x20
556 ADD
557 SWAP1
558 DUP2
559 MSTORE
560 PUSH1 0x20
562 ADD
563 PUSH1 0x00
565 SHA3
566 SLOAD
567 SUB
568 LT
569 ISZERO
570 ISZERO
571 ISZERO
572 PUSH2 0x0244
575 JUMPI
576 PUSH1 0x00
578 DUP1
579 REVERT
580 JUMPDEST
581 DUP2
582 PUSH1 0x00
584 DUP1
585 CALLER
586 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
607 AND
608 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
629 AND
630 DUP2
631 MSTORE
632 PUSH1 0x20
634 ADD
635 SWAP1
636 DUP2
637 MSTORE
638 PUSH1 0x20
640 ADD
641 PUSH1 0x00
643 SHA3
644 PUSH1 0x00
646 DUP3
647 DUP3
648 SLOAD
649 SUB
650 SWAP3
651 POP
652 POP
653 DUP2
654 SWAP1
655 SSTORE
656 POP
657 DUP2
658 PUSH1 0x00
660 DUP1
661 DUP6
662 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
683 AND
684 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
705 AND
706 DUP2
707 MSTORE
708 PUSH1 0x20
710 ADD
711 SWAP1
712 DUP2
713 MSTORE
714 PUSH1 0x20
716 ADD
717 PUSH1 0x00
719 SHA3
720 PUSH1 0x00
722 DUP3
723 DUP3
724 SLOAD
725 ADD
726 SWAP3
727 POP
728 POP
729 DUP2
730 SWAP1
731 SSTORE
732 POP
733 PUSH1 0x02
735 PUSH1 0x00
737 DUP1
738 DUP6
739 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
760 AND
761 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
782 AND
783 DUP2
784 MSTORE
785 PUSH1 0x20
787 ADD
788 SWAP1
789 DUP2
790 MSTORE
791 PUSH1 0x20
793 ADD
794 PUSH1 0x00
796 SHA3
797 DUP2
798 SWAP1
799 SSTORE
800 POP
801 PUSH1 0x01
803 SWAP1
804 POP
805 SWAP3
806 SWAP2
807 POP
808 POP
809 JUMP
810 STOP

File diff suppressed because one or more lines are too long

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

Loading…
Cancel
Save