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, |
"error": null, |
||||||
"issues":[ |
"issues": [ |
||||||
{ |
{ |
||||||
"address":661, |
"address": 661, |
||||||
"contract":"Unknown", |
"contract": "Unknown", |
||||||
"debug":"<DEBUG-DATA>", |
"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.", |
"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()", |
"function": "thisisfine()", |
||||||
"max_gas_used":1254, |
"max_gas_used": 1254, |
||||||
"min_gas_used":643, |
"min_gas_used": 643, |
||||||
"severity":"Low", |
"severity": "Low", |
||||||
"sourceMap":null, |
"sourceMap": null, |
||||||
"swc-id":"107", |
"swc-id": "107", |
||||||
"title":"External Call To Fixed Address" |
"title": "External Call To Fixed Address" |
||||||
}, |
}, |
||||||
{ |
{ |
||||||
"address":661, |
"address": 661, |
||||||
"contract":"Unknown", |
"contract": "Unknown", |
||||||
"debug":"<DEBUG-DATA>", |
"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.", |
"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()", |
"function": "thisisfine()", |
||||||
"max_gas_used":35972, |
"max_gas_used": 35972, |
||||||
"min_gas_used":1361, |
"min_gas_used": 1361, |
||||||
"severity":"Low", |
"severity": "Low", |
||||||
"sourceMap":null, |
"sourceMap": null, |
||||||
"swc-id":"104", |
"swc-id": "104", |
||||||
"title":"Unchecked Call Return Value" |
"title": "Unchecked Call Return Value" |
||||||
}, |
}, |
||||||
{ |
{ |
||||||
"address":779, |
"address": 779, |
||||||
"contract":"Unknown", |
"contract": "Unknown", |
||||||
"debug":"<DEBUG-DATA>", |
"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.", |
"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()", |
"function": "callstoredaddress()", |
||||||
"max_gas_used":1298, |
"max_gas_used": 1298, |
||||||
"min_gas_used":687, |
"min_gas_used": 687, |
||||||
"severity":"Low", |
"severity": "Low", |
||||||
"sourceMap":null, |
"sourceMap": null, |
||||||
"swc-id":"107", |
"swc-id": "107", |
||||||
"title":"External Call To Fixed Address" |
"title": "External Call To Fixed Address" |
||||||
}, |
}, |
||||||
{ |
{ |
||||||
"address":779, |
"address": 779, |
||||||
"contract":"Unknown", |
"contract": "Unknown", |
||||||
"debug":"<DEBUG-DATA>", |
"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.", |
"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()", |
"function": "callstoredaddress()", |
||||||
"max_gas_used":36016, |
"max_gas_used": 36016, |
||||||
"min_gas_used":1405, |
"min_gas_used": 1405, |
||||||
"severity":"Low", |
"severity": "Low", |
||||||
"sourceMap":null, |
"sourceMap": null, |
||||||
"swc-id":"104", |
"swc-id": "104", |
||||||
"title":"Unchecked Call Return Value" |
"title": "Unchecked Call Return Value" |
||||||
}, |
}, |
||||||
{ |
{ |
||||||
"address":858, |
"address": 858, |
||||||
"contract":"Unknown", |
"contract": "Unknown", |
||||||
"debug":"<DEBUG-DATA>", |
"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.", |
"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()", |
"function": "reentrancy()", |
||||||
"max_gas_used":1320, |
"max_gas_used": 1320, |
||||||
"min_gas_used":709, |
"min_gas_used": 709, |
||||||
"severity":"Low", |
"severity": "Low", |
||||||
"sourceMap":null, |
"sourceMap": null, |
||||||
"swc-id":"107", |
"swc-id": "107", |
||||||
"title":"External Call To Fixed Address" |
"title": "External Call To Fixed Address" |
||||||
}, |
}, |
||||||
{ |
{ |
||||||
"address":858, |
"address": 858, |
||||||
"contract":"Unknown", |
"contract": "Unknown", |
||||||
"debug":"<DEBUG-DATA>", |
"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.", |
"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()", |
"function": "reentrancy()", |
||||||
"max_gas_used":61052, |
"max_gas_used": 61052, |
||||||
"min_gas_used":6441, |
"min_gas_used": 6441, |
||||||
"severity":"Low", |
"severity": "Low", |
||||||
"sourceMap":null, |
"sourceMap": null, |
||||||
"swc-id":"104", |
"swc-id": "104", |
||||||
"title":"Unchecked Call Return Value" |
"title": "Unchecked Call Return Value" |
||||||
}, |
}, |
||||||
{ |
{ |
||||||
"address":869, |
"address": 869, |
||||||
"contract":"Unknown", |
"contract": "Unknown", |
||||||
"debug":"<DEBUG-DATA>", |
"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.", |
"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()", |
"function": "reentrancy()", |
||||||
"max_gas_used":null, |
"max_gas_used": null, |
||||||
"min_gas_used":null, |
"min_gas_used": null, |
||||||
"severity":"Low", |
"severity": "Low", |
||||||
"sourceMap":null, |
"sourceMap": null, |
||||||
"swc-id":"107", |
"swc-id": "107", |
||||||
"title":"State change after external call" |
"title": "State change after external call" |
||||||
}, |
}, |
||||||
{ |
{ |
||||||
"address":912, |
"address": 912, |
||||||
"contract":"Unknown", |
"contract": "Unknown", |
||||||
"debug":"<DEBUG-DATA>", |
"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.", |
"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)", |
"function": "calluseraddress(address)", |
||||||
"max_gas_used":616, |
"max_gas_used": 616, |
||||||
"min_gas_used":335, |
"min_gas_used": 335, |
||||||
"severity":"Medium", |
"severity": "Medium", |
||||||
"sourceMap":null, |
"sourceMap": null, |
||||||
"swc-id":"107", |
"swc-id": "107", |
||||||
"title":"External Call To User-Supplied Address" |
"title": "External Call To User-Supplied Address" |
||||||
}, |
}, |
||||||
{ |
{ |
||||||
"address":912, |
"address": 912, |
||||||
"contract":"Unknown", |
"contract": "Unknown", |
||||||
"debug":"<DEBUG-DATA>", |
"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.", |
"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)", |
"function": "calluseraddress(address)", |
||||||
"max_gas_used":35336, |
"max_gas_used": 35336, |
||||||
"min_gas_used":1055, |
"min_gas_used": 1055, |
||||||
"severity":"Low", |
"severity": "Low", |
||||||
"sourceMap":null, |
"sourceMap": null, |
||||||
"swc-id":"104", |
"swc-id": "104", |
||||||
"title":"Unchecked Call Return Value" |
"title": "Unchecked Call Return Value" |
||||||
} |
} |
||||||
], |
], |
||||||
"success":true |
"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