diff --git a/manticore/ethereum.py b/manticore/ethereum.py index ec77cd6..e36e0ad 100644 --- a/manticore/ethereum.py +++ b/manticore/ethereum.py @@ -1213,6 +1213,7 @@ class ManticoreEVM(Manticore): signature = metadata.get_func_signature(function_id) function_name, arguments = ABI.parse(signature, tx.data) + return_data = None if tx.result == 'RETURN': ret_types = metadata.get_func_return_types(function_id) return_data = ABI.parse(ret_types, tx.return_data) #function return @@ -1224,13 +1225,15 @@ class ManticoreEVM(Manticore): is_argument_symbolic = any(map(issymbolic, arguments)) is_something_symbolic = is_something_symbolic or is_argument_symbolic tx_summary.write(') -> %s %s\n' % ( tx.result, flagged(is_argument_symbolic))) - is_return_symbolic = any(map(issymbolic, return_data)) - return_values = tuple(map(state.solve_one, return_data)) - if len(return_values) == 1: - return_values = return_values[0] - tx_summary.write('return: %r %s\n' % ( return_values, flagged(is_return_symbolic))) - is_something_symbolic = is_something_symbolic or is_return_symbolic + if return_data is not None: + is_return_symbolic = any(map(issymbolic, return_data)) + return_values = tuple(map(state.solve_one, return_data)) + if len(return_values) == 1: + return_values = return_values[0] + + tx_summary.write('return: %r %s\n' % ( return_values, flagged(is_return_symbolic))) + is_something_symbolic = is_something_symbolic or is_return_symbolic tx_summary.write('\n\n')