mirror of https://github.com/ConsenSys/mythril
Balance modelling and symbolic sender variables (#1025)
* add actor address to symbolic This will allow us to simulate semi-symbolic transaction senders * add value transfer to transaction global state creation * add proper balance tracking to world state and account * use address value vs string * disable actor address variable * use address directly * allow balance functions with int types * use value as getters since bitvecs aren't hashable * implement correct value transfer for suicide * use actor from actor pool * allow use of Or with *arg pattern * use bitvec instead of strings * add dynamic balance implementation to state datamodels * cleanup svm interface * use balance lambda in suicide op implementation * use bitvec instead of string address * update world state and account creation in symbolic * update tests to include overflow results * apply style rules * ignore previous open states for now * update native test to conform to new laser interface * fix incorrect types in the symbolic virtual machine * allow multiple types as input for address in account * fix type hint in symbolic.py * get int out of string in call * fix type in call op implementation * adapt test_transaction to conform to new laser interface * use static address to keep contracts from trying to enter themselves and make address type more dynamic * update evm test to conform to new laser interface * implement suicide to uncreated account * apply style rules * dynamically create colormap This removes the need for a globally maintained accountlist * get value out of address * add accounts getter * change symbolic test call to be valid with respect to the world state and account apis * remove dependency on globally recorded accounts * fix typing issues * fix type annotations in symbolic.py * fix remaining mypy warnings * simplify assertion check * execute lambda to get balance * make variable name plural * add documentation to svm constructor * use list comprehension to make code cleaner * remove comment * change variable name to plural * remove commented code * change variable name to conform to changed interfacepull/1039/head
parent
1a9d0cdd0e
commit
a9671de8a3
@ -1,123 +1,123 @@ |
||||
{ |
||||
"error":null, |
||||
"issues":[ |
||||
{ |
||||
"address":661, |
||||
"contract":"Unknown", |
||||
"debug":"<DEBUG-DATA>", |
||||
"description":"The contract executes an external message call.\nAn external function call to a fixed contract address is executed. Make sure that the callee contract has been reviewed carefully.", |
||||
"function":"thisisfine()", |
||||
"max_gas_used":1254, |
||||
"min_gas_used":643, |
||||
"severity":"Low", |
||||
"sourceMap":null, |
||||
"swc-id":"107", |
||||
"title":"External Call To Fixed Address" |
||||
}, |
||||
{ |
||||
"address":661, |
||||
"contract":"Unknown", |
||||
"debug":"<DEBUG-DATA>", |
||||
"description":"The return value of a message call is not checked.\nExternal calls return a boolean value. If the callee contract halts with an exception, 'false' is returned and execution continues in the caller. It is usually recommended to wrap external calls into a require statement to prevent unexpected states.", |
||||
"function":"thisisfine()", |
||||
"max_gas_used":35972, |
||||
"min_gas_used":1361, |
||||
"severity":"Low", |
||||
"sourceMap":null, |
||||
"swc-id":"104", |
||||
"title":"Unchecked Call Return Value" |
||||
}, |
||||
{ |
||||
"address":779, |
||||
"contract":"Unknown", |
||||
"debug":"<DEBUG-DATA>", |
||||
"description":"The contract executes an external message call.\nAn external function call to a fixed contract address is executed. Make sure that the callee contract has been reviewed carefully.", |
||||
"function":"callstoredaddress()", |
||||
"max_gas_used":1298, |
||||
"min_gas_used":687, |
||||
"severity":"Low", |
||||
"sourceMap":null, |
||||
"swc-id":"107", |
||||
"title":"External Call To Fixed Address" |
||||
}, |
||||
{ |
||||
"address":779, |
||||
"contract":"Unknown", |
||||
"debug":"<DEBUG-DATA>", |
||||
"description":"The return value of a message call is not checked.\nExternal calls return a boolean value. If the callee contract halts with an exception, 'false' is returned and execution continues in the caller. It is usually recommended to wrap external calls into a require statement to prevent unexpected states.", |
||||
"function":"callstoredaddress()", |
||||
"max_gas_used":36016, |
||||
"min_gas_used":1405, |
||||
"severity":"Low", |
||||
"sourceMap":null, |
||||
"swc-id":"104", |
||||
"title":"Unchecked Call Return Value" |
||||
}, |
||||
{ |
||||
"address":858, |
||||
"contract":"Unknown", |
||||
"debug":"<DEBUG-DATA>", |
||||
"description":"The contract executes an external message call.\nAn external function call to a fixed contract address is executed. Make sure that the callee contract has been reviewed carefully.", |
||||
"function":"reentrancy()", |
||||
"max_gas_used":1320, |
||||
"min_gas_used":709, |
||||
"severity":"Low", |
||||
"sourceMap":null, |
||||
"swc-id":"107", |
||||
"title":"External Call To Fixed Address" |
||||
}, |
||||
{ |
||||
"address":858, |
||||
"contract":"Unknown", |
||||
"debug":"<DEBUG-DATA>", |
||||
"description":"The return value of a message call is not checked.\nExternal calls return a boolean value. If the callee contract halts with an exception, 'false' is returned and execution continues in the caller. It is usually recommended to wrap external calls into a require statement to prevent unexpected states.", |
||||
"function":"reentrancy()", |
||||
"max_gas_used":61052, |
||||
"min_gas_used":6441, |
||||
"severity":"Low", |
||||
"sourceMap":null, |
||||
"swc-id":"104", |
||||
"title":"Unchecked Call Return Value" |
||||
}, |
||||
{ |
||||
"address":869, |
||||
"contract":"Unknown", |
||||
"debug":"<DEBUG-DATA>", |
||||
"description":"The contract account state is changed after an external call. \nConsider that the called contract could re-enter the function before this state change takes place. This can lead to business logic vulnerabilities.", |
||||
"function":"reentrancy()", |
||||
"max_gas_used":null, |
||||
"min_gas_used":null, |
||||
"severity":"Low", |
||||
"sourceMap":null, |
||||
"swc-id":"107", |
||||
"title":"State change after external call" |
||||
}, |
||||
{ |
||||
"address":912, |
||||
"contract":"Unknown", |
||||
"debug":"<DEBUG-DATA>", |
||||
"description":"A call to a user-supplied address is executed.\nThe callee address of an external message call can be set by the caller. Note that the callee can contain arbitrary code and may re-enter any function in this contract. Review the business logic carefully to prevent averse effects on the contract state.", |
||||
"function":"calluseraddress(address)", |
||||
"max_gas_used":616, |
||||
"min_gas_used":335, |
||||
"severity":"Medium", |
||||
"sourceMap":null, |
||||
"swc-id":"107", |
||||
"title":"External Call To User-Supplied Address" |
||||
}, |
||||
{ |
||||
"address":912, |
||||
"contract":"Unknown", |
||||
"debug":"<DEBUG-DATA>", |
||||
"description":"The return value of a message call is not checked.\nExternal calls return a boolean value. If the callee contract halts with an exception, 'false' is returned and execution continues in the caller. It is usually recommended to wrap external calls into a require statement to prevent unexpected states.", |
||||
"function":"calluseraddress(address)", |
||||
"max_gas_used":35336, |
||||
"min_gas_used":1055, |
||||
"severity":"Low", |
||||
"sourceMap":null, |
||||
"swc-id":"104", |
||||
"title":"Unchecked Call Return Value" |
||||
} |
||||
], |
||||
"success":true |
||||
} |
||||
"error": null, |
||||
"issues": [ |
||||
{ |
||||
"address": 661, |
||||
"contract": "Unknown", |
||||
"debug": "<DEBUG-DATA>", |
||||
"description": "The contract executes an external message call.\nAn external function call to a fixed contract address is executed. Make sure that the callee contract has been reviewed carefully.", |
||||
"function": "thisisfine()", |
||||
"max_gas_used": 1254, |
||||
"min_gas_used": 643, |
||||
"severity": "Low", |
||||
"sourceMap": null, |
||||
"swc-id": "107", |
||||
"title": "External Call To Fixed Address" |
||||
}, |
||||
{ |
||||
"address": 661, |
||||
"contract": "Unknown", |
||||
"debug": "<DEBUG-DATA>", |
||||
"description": "The return value of a message call is not checked.\nExternal calls return a boolean value. If the callee contract halts with an exception, 'false' is returned and execution continues in the caller. It is usually recommended to wrap external calls into a require statement to prevent unexpected states.", |
||||
"function": "thisisfine()", |
||||
"max_gas_used": 35972, |
||||
"min_gas_used": 1361, |
||||
"severity": "Low", |
||||
"sourceMap": null, |
||||
"swc-id": "104", |
||||
"title": "Unchecked Call Return Value" |
||||
}, |
||||
{ |
||||
"address": 779, |
||||
"contract": "Unknown", |
||||
"debug": "<DEBUG-DATA>", |
||||
"description": "The contract executes an external message call.\nAn external function call to a fixed contract address is executed. Make sure that the callee contract has been reviewed carefully.", |
||||
"function": "callstoredaddress()", |
||||
"max_gas_used": 1298, |
||||
"min_gas_used": 687, |
||||
"severity": "Low", |
||||
"sourceMap": null, |
||||
"swc-id": "107", |
||||
"title": "External Call To Fixed Address" |
||||
}, |
||||
{ |
||||
"address": 779, |
||||
"contract": "Unknown", |
||||
"debug": "<DEBUG-DATA>", |
||||
"description": "The return value of a message call is not checked.\nExternal calls return a boolean value. If the callee contract halts with an exception, 'false' is returned and execution continues in the caller. It is usually recommended to wrap external calls into a require statement to prevent unexpected states.", |
||||
"function": "callstoredaddress()", |
||||
"max_gas_used": 36016, |
||||
"min_gas_used": 1405, |
||||
"severity": "Low", |
||||
"sourceMap": null, |
||||
"swc-id": "104", |
||||
"title": "Unchecked Call Return Value" |
||||
}, |
||||
{ |
||||
"address": 858, |
||||
"contract": "Unknown", |
||||
"debug": "<DEBUG-DATA>", |
||||
"description": "The contract executes an external message call.\nAn external function call to a fixed contract address is executed. Make sure that the callee contract has been reviewed carefully.", |
||||
"function": "reentrancy()", |
||||
"max_gas_used": 1320, |
||||
"min_gas_used": 709, |
||||
"severity": "Low", |
||||
"sourceMap": null, |
||||
"swc-id": "107", |
||||
"title": "External Call To Fixed Address" |
||||
}, |
||||
{ |
||||
"address": 858, |
||||
"contract": "Unknown", |
||||
"debug": "<DEBUG-DATA>", |
||||
"description": "The return value of a message call is not checked.\nExternal calls return a boolean value. If the callee contract halts with an exception, 'false' is returned and execution continues in the caller. It is usually recommended to wrap external calls into a require statement to prevent unexpected states.", |
||||
"function": "reentrancy()", |
||||
"max_gas_used": 61052, |
||||
"min_gas_used": 6441, |
||||
"severity": "Low", |
||||
"sourceMap": null, |
||||
"swc-id": "104", |
||||
"title": "Unchecked Call Return Value" |
||||
}, |
||||
{ |
||||
"address": 869, |
||||
"contract": "Unknown", |
||||
"debug": "<DEBUG-DATA>", |
||||
"description": "The contract account state is changed after an external call. \nConsider that the called contract could re-enter the function before this state change takes place. This can lead to business logic vulnerabilities.", |
||||
"function": "reentrancy()", |
||||
"max_gas_used": null, |
||||
"min_gas_used": null, |
||||
"severity": "Low", |
||||
"sourceMap": null, |
||||
"swc-id": "107", |
||||
"title": "State change after external call" |
||||
}, |
||||
{ |
||||
"address": 912, |
||||
"contract": "Unknown", |
||||
"debug": "<DEBUG-DATA>", |
||||
"description": "A call to a user-supplied address is executed.\nThe callee address of an external message call can be set by the caller. Note that the callee can contain arbitrary code and may re-enter any function in this contract. Review the business logic carefully to prevent averse effects on the contract state.", |
||||
"function": "calluseraddress(address)", |
||||
"max_gas_used": 616, |
||||
"min_gas_used": 335, |
||||
"severity": "Medium", |
||||
"sourceMap": null, |
||||
"swc-id": "107", |
||||
"title": "External Call To User-Supplied Address" |
||||
}, |
||||
{ |
||||
"address": 912, |
||||
"contract": "Unknown", |
||||
"debug": "<DEBUG-DATA>", |
||||
"description": "The return value of a message call is not checked.\nExternal calls return a boolean value. If the callee contract halts with an exception, 'false' is returned and execution continues in the caller. It is usually recommended to wrap external calls into a require statement to prevent unexpected states.", |
||||
"function": "calluseraddress(address)", |
||||
"max_gas_used": 35336, |
||||
"min_gas_used": 1055, |
||||
"severity": "Low", |
||||
"sourceMap": null, |
||||
"swc-id": "104", |
||||
"title": "Unchecked Call Return Value" |
||||
} |
||||
], |
||||
"success": true |
||||
} |
@ -1,36 +0,0 @@ |
||||
{ |
||||
"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 |
||||
} |
@ -1,34 +0,0 @@ |
||||
# Analysis results for test-filename.sol |
||||
|
||||
## Integer Overflow |
||||
- SWC ID: 101 |
||||
- Type: Warning |
||||
- Contract: Unknown |
||||
- Function name: `_function_0x83f12fec` |
||||
- PC address: 158 |
||||
|
||||
### Description |
||||
|
||||
The arithmetic operation can result in integer overflow. |
||||
|
||||
## Integer Overflow |
||||
- SWC ID: 101 |
||||
- Type: Warning |
||||
- Contract: Unknown |
||||
- Function name: `_function_0x83f12fec` |
||||
- PC address: 278 |
||||
|
||||
### Description |
||||
|
||||
The arithmetic operation can result in integer overflow. |
||||
|
||||
## Integer Underflow |
||||
- SWC ID: 101 |
||||
- Type: Warning |
||||
- Contract: Unknown |
||||
- Function name: `_function_0x83f12fec` |
||||
- PC address: 378 |
||||
|
||||
### Description |
||||
|
||||
The substraction can result in an integer underflow. |
@ -1,30 +0,0 @@ |
||||
==== Integer Overflow ==== |
||||
SWC ID: 101 |
||||
Type: Warning |
||||
Contract: Unknown |
||||
Function name: _function_0x83f12fec |
||||
PC address: 158 |
||||
The arithmetic operation can result in integer overflow. |
||||
|
||||
-------------------- |
||||
|
||||
==== Integer Overflow ==== |
||||
SWC ID: 101 |
||||
Type: Warning |
||||
Contract: Unknown |
||||
Function name: _function_0x83f12fec |
||||
PC address: 278 |
||||
The arithmetic operation can result in integer overflow. |
||||
|
||||
-------------------- |
||||
|
||||
==== Integer Underflow ==== |
||||
SWC ID: 101 |
||||
Type: Warning |
||||
Contract: Unknown |
||||
Function name: _function_0x83f12fec |
||||
PC address: 378 |
||||
The substraction can result in an integer underflow. |
||||
|
||||
-------------------- |
||||
|
@ -1 +1,11 @@ |
||||
[{"issues": [], "meta": {}, "sourceFormat": "evm-byzantium-bytecode", "sourceList": ["0x3746c7c2ae7b0d4c3f8b1905df9a7ea169b9f93bec68a10a00b4c9d27a18c6fb"], "sourceType": "raw-bytecode"}] |
||||
[ |
||||
{ |
||||
"issues": [], |
||||
"meta": {}, |
||||
"sourceFormat": "evm-byzantium-bytecode", |
||||
"sourceList": [ |
||||
"0x3746c7c2ae7b0d4c3f8b1905df9a7ea169b9f93bec68a10a00b4c9d27a18c6fb" |
||||
], |
||||
"sourceType": "raw-bytecode" |
||||
} |
||||
] |
@ -1 +1,11 @@ |
||||
[{"issues": [], "meta": {}, "sourceFormat": "evm-byzantium-bytecode", "sourceList": ["0x0e6f727bb3301e02d3be831bf34357522fd2f1d40e90dff8e2214553b06b5f6c"], "sourceType": "raw-bytecode"}] |
||||
[ |
||||
{ |
||||
"issues": [], |
||||
"meta": {}, |
||||
"sourceFormat": "evm-byzantium-bytecode", |
||||
"sourceList": [ |
||||
"0x0e6f727bb3301e02d3be831bf34357522fd2f1d40e90dff8e2214553b06b5f6c" |
||||
], |
||||
"sourceType": "raw-bytecode" |
||||
} |
||||
] |
@ -1 +1,11 @@ |
||||
[{"issues": [], "meta": {}, "sourceFormat": "evm-byzantium-bytecode", "sourceList": ["0x11a78eb09819f505ba4f10747e6d1f7a44480e602c67573b7abac2f733a85d93"], "sourceType": "raw-bytecode"}] |
||||
[ |
||||
{ |
||||
"issues": [], |
||||
"meta": {}, |
||||
"sourceFormat": "evm-byzantium-bytecode", |
||||
"sourceList": [ |
||||
"0x11a78eb09819f505ba4f10747e6d1f7a44480e602c67573b7abac2f733a85d93" |
||||
], |
||||
"sourceType": "raw-bytecode" |
||||
} |
||||
] |
@ -1,166 +0,0 @@ |
||||
{ |
||||
"success": true, |
||||
"error": null, |
||||
"issues": [ |
||||
{ |
||||
"title": "Ether send", |
||||
"description": "In the function `_function_0x4229616d` a non-zero amount of Ether is sent to an address taken from storage slot 5.\nThere is a check on storage index 5. This storage slot can be written to by calling the function `_function_0x67f809e9`.\n\nThere is a check on storage index 5. This storage slot can be written to by calling the function `_function_0x67f809e9`.\nThere is a check on storage index 1. This storage slot can be written to by calling the function `fallback`.", |
||||
"function": "_function_0x4229616d", |
||||
"type": "Warning", |
||||
"address": 1599, |
||||
"debug": "<DEBUG-DATA>" |
||||
}, |
||||
{ |
||||
"title": "Ether send", |
||||
"description": "In the function `_function_0xb4022950` a non-zero amount of Ether is sent to an address taken from storage slot 5.\nThere is a check on storage index 5. This storage slot can be written to by calling the function `_function_0x67f809e9`.\n\nThere is a check on storage index 5. This storage slot can be written to by calling the function `_function_0x67f809e9`.\nThere is a check on storage index 1. This storage slot can be written to by calling the function `fallback`.\nThere is a check on storage index 5. This storage slot can be written to by calling the function `_function_0x67f809e9`.\nThere is a check on storage index 1. This storage slot can be written to by calling the function `fallback`.", |
||||
"function": "_function_0xb4022950", |
||||
"type": "Warning", |
||||
"address": 1940, |
||||
"debug": "<DEBUG-DATA>" |
||||
}, |
||||
{ |
||||
"title": "Ether send", |
||||
"description": "In the function `_function_0xb4022950` a non-zero amount of Ether is sent to an address taken from storage slot 5.\nThere is a check on storage index 5. This storage slot can be written to by calling the function `_function_0x67f809e9`.\n\nThere is a check on storage index 5. This storage slot can be written to by calling the function `_function_0x67f809e9`.\nThere is a check on storage index 1. This storage slot can be written to by calling the function `fallback`.\nThere is a check on storage index 5. This storage slot can be written to by calling the function `_function_0x67f809e9`.\nThere is a check on storage index 1. This storage slot can be written to by calling the function `fallback`.\nThere is a check on storage index 1. This storage slot can be written to by calling the function `fallback`.", |
||||
"function": "_function_0xb4022950", |
||||
"type": "Warning", |
||||
"address": 2582, |
||||
"debug": "<DEBUG-DATA>" |
||||
}, |
||||
{ |
||||
"title": "Exception state", |
||||
"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. This is acceptable in most situations. Note however that `assert()` should only be used to check invariants. Use `require()` for regular input checking. ", |
||||
"function": "_function_0x57d4021b", |
||||
"type": "Informational", |
||||
"address": 1653, |
||||
"debug": "<DEBUG-DATA>" |
||||
}, |
||||
{ |
||||
"title": "Exception state", |
||||
"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. This is acceptable in most situations. Note however that `assert()` should only be used to check invariants. Use `require()` for regular input checking. ", |
||||
"function": "_function_0x9dbc4f9b", |
||||
"type": "Informational", |
||||
"address": 2085, |
||||
"debug": "<DEBUG-DATA>" |
||||
}, |
||||
{ |
||||
"title": "Invariant branch condition", |
||||
"description": "Found a conditional jump which always follows the same branch", |
||||
"function": "fallback", |
||||
"type": "Informational", |
||||
"address": 3111, |
||||
"debug": "<DEBUG-DATA>" |
||||
}, |
||||
{ |
||||
"title": "Invariant branch condition", |
||||
"description": "Found a conditional jump which always follows the same branch", |
||||
"function": "fallback", |
||||
"type": "Informational", |
||||
"address": 3140, |
||||
"debug": "<DEBUG-DATA>" |
||||
}, |
||||
{ |
||||
"title": "Invariant branch condition", |
||||
"description": "Found a conditional jump which always follows the same branch", |
||||
"function": "fallback", |
||||
"type": "Informational", |
||||
"address": 2950, |
||||
"debug": "<DEBUG-DATA>" |
||||
}, |
||||
{ |
||||
"title": "Invariant branch condition", |
||||
"description": "Found a conditional jump which always follows the same branch", |
||||
"function": "fallback", |
||||
"type": "Informational", |
||||
"address": 1268, |
||||
"debug": "<DEBUG-DATA>" |
||||
}, |
||||
{ |
||||
"title": "Invariant branch condition", |
||||
"description": "Found a conditional jump which always follows the same branch", |
||||
"function": "_function_0x09dfdc71", |
||||
"type": "Informational", |
||||
"address": 310, |
||||
"debug": "<DEBUG-DATA>" |
||||
}, |
||||
{ |
||||
"title": "Invariant branch condition", |
||||
"description": "Found a conditional jump which always follows the same branch", |
||||
"function": "_function_0x09dfdc71", |
||||
"type": "Informational", |
||||
"address": 1316, |
||||
"debug": "<DEBUG-DATA>" |
||||
}, |
||||
{ |
||||
"title": "Invariant branch condition", |
||||
"description": "Found a conditional jump which always follows the same branch", |
||||
"function": "_function_0x253459e3", |
||||
"type": "Informational", |
||||
"address": 1375, |
||||
"debug": "<DEBUG-DATA>" |
||||
}, |
||||
{ |
||||
"title": "Invariant branch condition", |
||||
"description": "Found a conditional jump which always follows the same branch", |
||||
"function": "_function_0x4229616d", |
||||
"type": "Informational", |
||||
"address": 1511, |
||||
"debug": "<DEBUG-DATA>" |
||||
}, |
||||
{ |
||||
"title": "Invariant branch condition", |
||||
"description": "Found a conditional jump which always follows the same branch", |
||||
"function": "_function_0x57d4021b", |
||||
"type": "Informational", |
||||
"address": 1679, |
||||
"debug": "<DEBUG-DATA>" |
||||
}, |
||||
{ |
||||
"title": "Invariant branch condition", |
||||
"description": "Found a conditional jump which always follows the same branch", |
||||
"function": "_function_0x6fbaaa1e", |
||||
"type": "Informational", |
||||
"address": 618, |
||||
"debug": "<DEBUG-DATA>" |
||||
}, |
||||
{ |
||||
"title": "Invariant branch condition", |
||||
"description": "Found a conditional jump which always follows the same branch", |
||||
"function": "_function_0x8a5fb3ca", |
||||
"type": "Informational", |
||||
"address": 805, |
||||
"debug": "<DEBUG-DATA>" |
||||
}, |
||||
{ |
||||
"title": "Invariant branch condition", |
||||
"description": "Found a conditional jump which always follows the same branch", |
||||
"function": "_function_0x9dbc4f9b", |
||||
"type": "Informational", |
||||
"address": 2187, |
||||
"debug": "<DEBUG-DATA>" |
||||
}, |
||||
{ |
||||
"title": "Unchecked CALL return value", |
||||
"description": "The return value of an external call is not checked. Note that execution continue even if the called contract throws.", |
||||
"function": "_function_0x4229616d", |
||||
"type": "Informational", |
||||
"address": 1599, |
||||
"debug": "<DEBUG-DATA>" |
||||
}, |
||||
{ |
||||
"title": "Unchecked CALL return value", |
||||
"description": "The return value of an external call is not checked. Note that execution continue even if the called contract throws.", |
||||
"function": "_function_0xb4022950", |
||||
"type": "Informational", |
||||
"address": 1940, |
||||
"debug": "<DEBUG-DATA>" |
||||
}, |
||||
{ |
||||
"title": "Unchecked CALL return value", |
||||
"description": "The return value of an external call is not checked. Note that execution continue even if the called contract throws.", |
||||
"function": "_function_0xb4022950", |
||||
"type": "Informational", |
||||
"address": 2582, |
||||
"debug": "<DEBUG-DATA>" |
||||
} |
||||
] |
||||
} |
@ -1,238 +0,0 @@ |
||||
# Analysis results for test-filename.sol |
||||
|
||||
## Ether send |
||||
|
||||
- Type: Warning |
||||
- Contract: Unknown |
||||
- Function name: `_function_0x4229616d` |
||||
- PC address: 1599 |
||||
|
||||
### Description |
||||
|
||||
In the function `_function_0x4229616d` a non-zero amount of Ether is sent to an address taken from storage slot 5. |
||||
There is a check on storage index 5. This storage slot can be written to by calling the function `_function_0x67f809e9`. |
||||
|
||||
There is a check on storage index 5. This storage slot can be written to by calling the function `_function_0x67f809e9`. |
||||
There is a check on storage index 1. This storage slot can be written to by calling the function `fallback`. |
||||
|
||||
## Ether send |
||||
|
||||
- Type: Warning |
||||
- Contract: Unknown |
||||
- Function name: `_function_0xb4022950` |
||||
- PC address: 1940 |
||||
|
||||
### Description |
||||
|
||||
In the function `_function_0xb4022950` a non-zero amount of Ether is sent to an address taken from storage slot 5. |
||||
There is a check on storage index 5. This storage slot can be written to by calling the function `_function_0x67f809e9`. |
||||
|
||||
There is a check on storage index 5. This storage slot can be written to by calling the function `_function_0x67f809e9`. |
||||
There is a check on storage index 1. This storage slot can be written to by calling the function `fallback`. |
||||
There is a check on storage index 5. This storage slot can be written to by calling the function `_function_0x67f809e9`. |
||||
There is a check on storage index 1. This storage slot can be written to by calling the function `fallback`. |
||||
|
||||
## Ether send |
||||
|
||||
- Type: Warning |
||||
- Contract: Unknown |
||||
- Function name: `_function_0xb4022950` |
||||
- PC address: 2582 |
||||
|
||||
### Description |
||||
|
||||
In the function `_function_0xb4022950` a non-zero amount of Ether is sent to an address taken from storage slot 5. |
||||
There is a check on storage index 5. This storage slot can be written to by calling the function `_function_0x67f809e9`. |
||||
|
||||
There is a check on storage index 5. This storage slot can be written to by calling the function `_function_0x67f809e9`. |
||||
There is a check on storage index 1. This storage slot can be written to by calling the function `fallback`. |
||||
There is a check on storage index 5. This storage slot can be written to by calling the function `_function_0x67f809e9`. |
||||
There is a check on storage index 1. This storage slot can be written to by calling the function `fallback`. |
||||
There is a check on storage index 1. This storage slot can be written to by calling the function `fallback`. |
||||
|
||||
## Exception state |
||||
|
||||
- Type: Informational |
||||
- Contract: Unknown |
||||
- Function name: `_function_0x57d4021b` |
||||
- PC address: 1653 |
||||
|
||||
### 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. This is acceptable in most situations. Note however that `assert()` should only be used to check invariants. Use `require()` for regular input checking. |
||||
|
||||
## Exception state |
||||
|
||||
- Type: Informational |
||||
- Contract: Unknown |
||||
- Function name: `_function_0x9dbc4f9b` |
||||
- PC address: 2085 |
||||
|
||||
### 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. This is acceptable in most situations. Note however that `assert()` should only be used to check invariants. Use `require()` for regular input checking. |
||||
|
||||
## Tautology |
||||
|
||||
- Type: Informational |
||||
- Contract: Unknown |
||||
- Function name: `fallback` |
||||
- PC address: 3111 |
||||
|
||||
### Description |
||||
|
||||
Found a conditional jump which always follows the same branch, value: True |
||||
|
||||
## Tautology |
||||
|
||||
- Type: Informational |
||||
- Contract: Unknown |
||||
- Function name: `fallback` |
||||
- PC address: 3140 |
||||
|
||||
### Description |
||||
|
||||
Found a conditional jump which always follows the same branch, value: True |
||||
|
||||
## Tautology |
||||
|
||||
- Type: Informational |
||||
- Contract: Unknown |
||||
- Function name: `fallback` |
||||
- PC address: 2950 |
||||
|
||||
### Description |
||||
|
||||
Found a conditional jump which always follows the same branch, value: True |
||||
|
||||
## Tautology |
||||
|
||||
- Type: Informational |
||||
- Contract: Unknown |
||||
- Function name: `fallback` |
||||
- PC address: 1268 |
||||
|
||||
### Description |
||||
|
||||
Found a conditional jump which always follows the same branch, value: True |
||||
|
||||
## Tautology |
||||
|
||||
- Type: Informational |
||||
- Contract: Unknown |
||||
- Function name: `_function_0x09dfdc71` |
||||
- PC address: 310 |
||||
|
||||
### Description |
||||
|
||||
Found a conditional jump which always follows the same branch, value: False |
||||
|
||||
## Tautology |
||||
|
||||
- Type: Informational |
||||
- Contract: Unknown |
||||
- Function name: `_function_0x09dfdc71` |
||||
- PC address: 1316 |
||||
|
||||
### Description |
||||
|
||||
Found a conditional jump which always follows the same branch, value: True |
||||
|
||||
## Tautology |
||||
|
||||
- Type: Informational |
||||
- Contract: Unknown |
||||
- Function name: `_function_0x253459e3` |
||||
- PC address: 1375 |
||||
|
||||
### Description |
||||
|
||||
Found a conditional jump which always follows the same branch, value: True |
||||
|
||||
## Tautology |
||||
|
||||
- Type: Informational |
||||
- Contract: Unknown |
||||
- Function name: `_function_0x4229616d` |
||||
- PC address: 1511 |
||||
|
||||
### Description |
||||
|
||||
Found a conditional jump which always follows the same branch, value: True |
||||
|
||||
## Tautology |
||||
|
||||
- Type: Informational |
||||
- Contract: Unknown |
||||
- Function name: `_function_0x57d4021b` |
||||
- PC address: 1679 |
||||
|
||||
### Description |
||||
|
||||
Found a conditional jump which always follows the same branch, value: True |
||||
|
||||
## Tautology |
||||
|
||||
- Type: Informational |
||||
- Contract: Unknown |
||||
- Function name: `_function_0x6fbaaa1e` |
||||
- PC address: 618 |
||||
|
||||
### Description |
||||
|
||||
Found a conditional jump which always follows the same branch, value: False |
||||
|
||||
## Tautology |
||||
|
||||
- Type: Informational |
||||
- Contract: Unknown |
||||
- Function name: `_function_0x8a5fb3ca` |
||||
- PC address: 805 |
||||
|
||||
### Description |
||||
|
||||
Found a conditional jump which always follows the same branch, value: False |
||||
|
||||
## Tautology |
||||
|
||||
- Type: Informational |
||||
- Contract: Unknown |
||||
- Function name: `_function_0x9dbc4f9b` |
||||
- PC address: 2187 |
||||
|
||||
### Description |
||||
|
||||
Found a conditional jump which always follows the same branch, value: True |
||||
|
||||
## Unchecked CALL return value |
||||
|
||||
- Type: Informational |
||||
- Contract: Unknown |
||||
- Function name: `_function_0x4229616d` |
||||
- PC address: 1599 |
||||
|
||||
### 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 |
||||
|
||||
- Type: Informational |
||||
- Contract: Unknown |
||||
- Function name: `_function_0xb4022950` |
||||
- PC address: 1940 |
||||
|
||||
### 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 |
||||
|
||||
- Type: Informational |
||||
- Contract: Unknown |
||||
- Function name: `_function_0xb4022950` |
||||
- PC address: 2582 |
||||
|
||||
### Description |
||||
|
||||
The return value of an external call is not checked. Note that execution continue even if the called contract throws. |
@ -1,177 +0,0 @@ |
||||
==== Ether send ==== |
||||
Type: Warning |
||||
Contract: Unknown |
||||
Function name: _function_0x4229616d |
||||
PC address: 1599 |
||||
In the function `_function_0x4229616d` a non-zero amount of Ether is sent to an address taken from storage slot 5. |
||||
There is a check on storage index 5. This storage slot can be written to by calling the function `_function_0x67f809e9`. |
||||
|
||||
There is a check on storage index 5. This storage slot can be written to by calling the function `_function_0x67f809e9`. |
||||
There is a check on storage index 1. This storage slot can be written to by calling the function `fallback`. |
||||
-------------------- |
||||
|
||||
==== Ether send ==== |
||||
Type: Warning |
||||
Contract: Unknown |
||||
Function name: _function_0xb4022950 |
||||
PC address: 1940 |
||||
In the function `_function_0xb4022950` a non-zero amount of Ether is sent to an address taken from storage slot 5. |
||||
There is a check on storage index 5. This storage slot can be written to by calling the function `_function_0x67f809e9`. |
||||
|
||||
There is a check on storage index 5. This storage slot can be written to by calling the function `_function_0x67f809e9`. |
||||
There is a check on storage index 1. This storage slot can be written to by calling the function `fallback`. |
||||
There is a check on storage index 5. This storage slot can be written to by calling the function `_function_0x67f809e9`. |
||||
There is a check on storage index 1. This storage slot can be written to by calling the function `fallback`. |
||||
-------------------- |
||||
|
||||
==== Ether send ==== |
||||
Type: Warning |
||||
Contract: Unknown |
||||
Function name: _function_0xb4022950 |
||||
PC address: 2582 |
||||
In the function `_function_0xb4022950` a non-zero amount of Ether is sent to an address taken from storage slot 5. |
||||
There is a check on storage index 5. This storage slot can be written to by calling the function `_function_0x67f809e9`. |
||||
|
||||
There is a check on storage index 5. This storage slot can be written to by calling the function `_function_0x67f809e9`. |
||||
There is a check on storage index 1. This storage slot can be written to by calling the function `fallback`. |
||||
There is a check on storage index 5. This storage slot can be written to by calling the function `_function_0x67f809e9`. |
||||
There is a check on storage index 1. This storage slot can be written to by calling the function `fallback`. |
||||
There is a check on storage index 1. This storage slot can be written to by calling the function `fallback`. |
||||
-------------------- |
||||
|
||||
==== Exception state ==== |
||||
Type: Informational |
||||
Contract: Unknown |
||||
Function name: _function_0x57d4021b |
||||
PC address: 1653 |
||||
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. This is acceptable in most situations. Note however that `assert()` should only be used to check invariants. Use `require()` for regular input checking. |
||||
-------------------- |
||||
|
||||
==== Exception state ==== |
||||
Type: Informational |
||||
Contract: Unknown |
||||
Function name: _function_0x9dbc4f9b |
||||
PC address: 2085 |
||||
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. This is acceptable in most situations. Note however that `assert()` should only be used to check invariants. Use `require()` for regular input checking. |
||||
-------------------- |
||||
|
||||
==== Tautology ==== |
||||
Type: Informational |
||||
Contract: Unknown |
||||
Function name: fallback |
||||
PC address: 3111 |
||||
Found a conditional jump which always follows the same branch, value: True |
||||
-------------------- |
||||
|
||||
==== Tautology ==== |
||||
Type: Informational |
||||
Contract: Unknown |
||||
Function name: fallback |
||||
PC address: 3140 |
||||
Found a conditional jump which always follows the same branch, value: True |
||||
-------------------- |
||||
|
||||
==== Tautology ==== |
||||
Type: Informational |
||||
Contract: Unknown |
||||
Function name: fallback |
||||
PC address: 2950 |
||||
Found a conditional jump which always follows the same branch, value: True |
||||
-------------------- |
||||
|
||||
==== Tautology ==== |
||||
Type: Informational |
||||
Contract: Unknown |
||||
Function name: fallback |
||||
PC address: 1268 |
||||
Found a conditional jump which always follows the same branch, value: True |
||||
-------------------- |
||||
|
||||
==== Tautology ==== |
||||
Type: Informational |
||||
Contract: Unknown |
||||
Function name: _function_0x09dfdc71 |
||||
PC address: 310 |
||||
Found a conditional jump which always follows the same branch, value: False |
||||
-------------------- |
||||
|
||||
==== Tautology ==== |
||||
Type: Informational |
||||
Contract: Unknown |
||||
Function name: _function_0x09dfdc71 |
||||
PC address: 1316 |
||||
Found a conditional jump which always follows the same branch, value: True |
||||
-------------------- |
||||
|
||||
==== Tautology ==== |
||||
Type: Informational |
||||
Contract: Unknown |
||||
Function name: _function_0x253459e3 |
||||
PC address: 1375 |
||||
Found a conditional jump which always follows the same branch, value: True |
||||
-------------------- |
||||
|
||||
==== Tautology ==== |
||||
Type: Informational |
||||
Contract: Unknown |
||||
Function name: _function_0x4229616d |
||||
PC address: 1511 |
||||
Found a conditional jump which always follows the same branch, value: True |
||||
-------------------- |
||||
|
||||
==== Tautology ==== |
||||
Type: Informational |
||||
Contract: Unknown |
||||
Function name: _function_0x57d4021b |
||||
PC address: 1679 |
||||
Found a conditional jump which always follows the same branch, value: True |
||||
-------------------- |
||||
|
||||
==== Tautology ==== |
||||
Type: Informational |
||||
Contract: Unknown |
||||
Function name: _function_0x6fbaaa1e |
||||
PC address: 618 |
||||
Found a conditional jump which always follows the same branch, value: False |
||||
-------------------- |
||||
|
||||
==== Tautology ==== |
||||
Type: Informational |
||||
Contract: Unknown |
||||
Function name: _function_0x8a5fb3ca |
||||
PC address: 805 |
||||
Found a conditional jump which always follows the same branch, value: False |
||||
-------------------- |
||||
|
||||
==== Tautology ==== |
||||
Type: Informational |
||||
Contract: Unknown |
||||
Function name: _function_0x9dbc4f9b |
||||
PC address: 2187 |
||||
Found a conditional jump which always follows the same branch, value: True |
||||
-------------------- |
||||
|
||||
==== Unchecked CALL return value ==== |
||||
Type: Informational |
||||
Contract: Unknown |
||||
Function name: _function_0x4229616d |
||||
PC address: 1599 |
||||
The return value of an external call is not checked. Note that execution continue even if the called contract throws. |
||||
-------------------- |
||||
|
||||
==== Unchecked CALL return value ==== |
||||
Type: Informational |
||||
Contract: Unknown |
||||
Function name: _function_0xb4022950 |
||||
PC address: 1940 |
||||
The return value of an external call is not checked. Note that execution continue even if the called contract throws. |
||||
-------------------- |
||||
|
||||
==== Unchecked CALL return value ==== |
||||
Type: Informational |
||||
Contract: Unknown |
||||
Function name: _function_0xb4022950 |
||||
PC address: 2582 |
||||
The return value of an external call is not checked. Note that execution continue even if the called contract throws. |
||||
-------------------- |
||||
|
@ -1,46 +0,0 @@ |
||||
{ |
||||
"success": true, |
||||
"error": null, |
||||
"issues": [ |
||||
{ |
||||
"title": "Dependence on predictable environment variable", |
||||
"description": "In the function `_function_0xe9874106` the following predictable state variables are used to determine Ether recipient:\n- block.coinbase\n", |
||||
"function": "_function_0xe9874106", |
||||
"type": "Warning", |
||||
"address": 1285, |
||||
"debug": "<DEBUG-DATA>" |
||||
}, |
||||
{ |
||||
"title": "Ether send", |
||||
"description": "In the function `_function_0xe9874106` a non-zero amount of Ether is sent to an address taken from storage slot 0.\nThere is a check on storage index 0. This storage slot can be written to by calling the function `fallback`.\n\nThere is a check on storage index 1. This storage slot can be written to by calling the function `fallback`.\nThere is a check on storage index 1. This storage slot can be written to by calling the function `fallback`.", |
||||
"function": "_function_0xe9874106", |
||||
"type": "Warning", |
||||
"address": 1285, |
||||
"debug": "<DEBUG-DATA>" |
||||
}, |
||||
{ |
||||
"title": "Exception state", |
||||
"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. This is acceptable in most situations. Note however that `assert()` should only be used to check invariants. Use `require()` for regular input checking. ", |
||||
"function": "fallback", |
||||
"type": "Informational", |
||||
"address": 356, |
||||
"debug": "<DEBUG-DATA>" |
||||
}, |
||||
{ |
||||
"title": "Exception state", |
||||
"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. This is acceptable in most situations. Note however that `assert()` should only be used to check invariants. Use `require()` for regular input checking. ", |
||||
"function": "_function_0xe9874106", |
||||
"type": "Informational", |
||||
"address": 146, |
||||
"debug": "<DEBUG-DATA>" |
||||
}, |
||||
{ |
||||
"title": "Transaction order dependence", |
||||
"description": "A possible transaction order independence vulnerability exists in function _function_0xe9874106. The value or direction of the call statement is determined from a tainted storage location", |
||||
"function": "_function_0xe9874106", |
||||
"type": "Warning", |
||||
"address": 1285, |
||||
"debug": "<DEBUG-DATA>" |
||||
} |
||||
] |
||||
} |
@ -1,62 +0,0 @@ |
||||
# Analysis results for test-filename.sol |
||||
|
||||
## Dependence on predictable environment variable |
||||
|
||||
- Type: Warning |
||||
- Contract: Unknown |
||||
- Function name: `_function_0xe9874106` |
||||
- PC address: 1285 |
||||
|
||||
### Description |
||||
|
||||
In the function `_function_0xe9874106` the following predictable state variables are used to determine Ether recipient: |
||||
- block.coinbase |
||||
|
||||
|
||||
## Ether send |
||||
|
||||
- Type: Warning |
||||
- Contract: Unknown |
||||
- Function name: `_function_0xe9874106` |
||||
- PC address: 1285 |
||||
|
||||
### Description |
||||
|
||||
In the function `_function_0xe9874106` a non-zero amount of Ether is sent to an address taken from storage slot 0. |
||||
There is a check on storage index 0. This storage slot can be written to by calling the function `fallback`. |
||||
|
||||
There is a check on storage index 1. This storage slot can be written to by calling the function `fallback`. |
||||
There is a check on storage index 1. This storage slot can be written to by calling the function `fallback`. |
||||
|
||||
## Exception state |
||||
|
||||
- Type: Informational |
||||
- Contract: Unknown |
||||
- Function name: `fallback` |
||||
- PC address: 356 |
||||
|
||||
### 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. This is acceptable in most situations. Note however that `assert()` should only be used to check invariants. Use `require()` for regular input checking. |
||||
|
||||
## Exception state |
||||
|
||||
- Type: Informational |
||||
- Contract: Unknown |
||||
- Function name: `_function_0xe9874106` |
||||
- PC address: 146 |
||||
|
||||
### 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. This is acceptable in most situations. Note however that `assert()` should only be used to check invariants. Use `require()` for regular input checking. |
||||
|
||||
## Transaction order dependence |
||||
|
||||
- Type: Warning |
||||
- Contract: Unknown |
||||
- Function name: `_function_0xe9874106` |
||||
- PC address: 1285 |
||||
|
||||
### Description |
||||
|
||||
A possible transaction order independence vulnerability exists in function _function_0xe9874106. The value or direction of the call statement is determined from a tainted storage location |
@ -1,46 +0,0 @@ |
||||
==== Dependence on predictable environment variable ==== |
||||
Type: Warning |
||||
Contract: Unknown |
||||
Function name: _function_0xe9874106 |
||||
PC address: 1285 |
||||
In the function `_function_0xe9874106` the following predictable state variables are used to determine Ether recipient: |
||||
- block.coinbase |
||||
|
||||
-------------------- |
||||
|
||||
==== Ether send ==== |
||||
Type: Warning |
||||
Contract: Unknown |
||||
Function name: _function_0xe9874106 |
||||
PC address: 1285 |
||||
In the function `_function_0xe9874106` a non-zero amount of Ether is sent to an address taken from storage slot 0. |
||||
There is a check on storage index 0. This storage slot can be written to by calling the function `fallback`. |
||||
|
||||
There is a check on storage index 1. This storage slot can be written to by calling the function `fallback`. |
||||
There is a check on storage index 1. This storage slot can be written to by calling the function `fallback`. |
||||
-------------------- |
||||
|
||||
==== Exception state ==== |
||||
Type: Informational |
||||
Contract: Unknown |
||||
Function name: fallback |
||||
PC address: 356 |
||||
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. This is acceptable in most situations. Note however that `assert()` should only be used to check invariants. Use `require()` for regular input checking. |
||||
-------------------- |
||||
|
||||
==== Exception state ==== |
||||
Type: Informational |
||||
Contract: Unknown |
||||
Function name: _function_0xe9874106 |
||||
PC address: 146 |
||||
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. This is acceptable in most situations. Note however that `assert()` should only be used to check invariants. Use `require()` for regular input checking. |
||||
-------------------- |
||||
|
||||
==== Transaction order dependence ==== |
||||
Type: Warning |
||||
Contract: Unknown |
||||
Function name: _function_0xe9874106 |
||||
PC address: 1285 |
||||
A possible transaction order independence vulnerability exists in function _function_0xe9874106. The value or direction of the call statement is determined from a tainted storage location |
||||
-------------------- |
||||
|
Loading…
Reference in new issue