Update test w.r.t bugfixes

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

@ -30,17 +30,17 @@ test_data = (
"0xa0cce1b3000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000",
"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",
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",
"0000000000000000000000000000000000000000000000000000000000000000",
"0000000000000000000000000000000000000000000000000000000000000090",
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",
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",
"0000000000000000000000000000005000000000000000000000000000000000",
"0000000000000000000000000000000000000000000000000000000000000000",
1,
0,
),

Loading…
Cancel
Save