Update test w.r.t bugfixes

optimise/summaries
Nikhil Parasaram 11 months ago
parent 91d20b1fb1
commit 25e31bc060
  1. 19
      mythril/analysis/report.py
  2. 10
      tests/analysis/abi_decode_test.py

@ -11,7 +11,7 @@ except ImportError:
from eth_abi import decode_abi as decode from eth_abi import decode_abi as decode
from jinja2 import PackageLoader, Environment from jinja2 import PackageLoader, Environment
from typing import Dict, List, Any, Optional from typing import Dict, Iterable, List, Any, Optional
import hashlib import hashlib
from mythril.laser.execution_info import ExecutionInfo from mythril.laser.execution_info import ExecutionInfo
@ -238,7 +238,7 @@ class Issue:
try: try:
decoded_output = decode(type_info, bytes.fromhex(data)) decoded_output = decode(type_info, bytes.fromhex(data))
decoded_output = tuple( decoded_output = tuple(
convert_bytes(item) if isinstance(item, bytes) else item convert_bytes(item) if isinstance(item, (bytes, Iterable)) else item
for item in decoded_output for item in decoded_output
) )
return decoded_output return decoded_output
@ -248,14 +248,15 @@ class Issue:
def convert_bytes(item): def convert_bytes(item):
""" """
Converts bytes to a serializable format. Converts bytes to a serializable format. Handles nested iterables.
""" """
try: if isinstance(item, bytes):
# Attempt to decode as UTF-8 text return item.hex()
return item.decode("utf-8") elif isinstance(item, Iterable) and not isinstance(item, (str, bytes)):
except UnicodeDecodeError: # Recursively apply convert_bytes to each item in the iterable
# If it fails, encode as base64 return type(item)(convert_bytes(subitem) for subitem in item)
return base64.b64encode(item).decode("utf-8") else:
return item
class Report: class Report:

@ -30,17 +30,17 @@ test_data = (
"0xa0cce1b3000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000", "0xa0cce1b3000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000",
"func(bytes32,(bytes32,bytes32,uint8,uint8)[],(address[],uint32))", "func(bytes32,(bytes32,bytes32,uint8,uint8)[],(address[],uint32))",
( (
b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02", "0000000000000000000000000000000000000000000000000000000000000002",
( (
( (
b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", "0000000000000000000000000000000000000000000000000000000000000000",
b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x90", "0000000000000000000000000000000000000000000000000000000000000090",
0, 0,
0, 0,
), ),
( (
b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00P\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", "0000000000000000000000000000005000000000000000000000000000000000",
b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", "0000000000000000000000000000000000000000000000000000000000000000",
1, 1,
0, 0,
), ),

Loading…
Cancel
Save