Open agroce opened 3 years ago
If helpful, here's what seems to be clearly a variant (again, exactly 54 quotes in the minimal failure-inducing input):
>>> vyper.compiler.compile_code('implements:0\n""""""""""""""""""""""""""""""""""""""""""""""""""""""')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python3.8/dist-packages/vyper-0.2.8-py3.8.egg/vyper/compiler/__init__.py", line 151, in compile_code
return compile_codes(
File "/usr/local/lib/python3.8/dist-packages/vyper-0.2.8-py3.8.egg/vyper/opcodes.py", line 222, in _wrapper
return fn(*args, **kwargs)
File "/usr/local/lib/python3.8/dist-packages/vyper-0.2.8-py3.8.egg/vyper/compiler/__init__.py", line 110, in compile_codes
raise exc
File "/usr/local/lib/python3.8/dist-packages/vyper-0.2.8-py3.8.egg/vyper/compiler/__init__.py", line 105, in compile_codes
out[contract_name][output_format] = OUTPUT_FORMATS[output_format](compiler_data)
File "/usr/local/lib/python3.8/dist-packages/vyper-0.2.8-py3.8.egg/vyper/compiler/output.py", line 138, in build_bytecode_output
return f"0x{compiler_data.bytecode.hex()}"
File "/usr/local/lib/python3.8/dist-packages/vyper-0.2.8-py3.8.egg/vyper/compiler/phases.py", line 126, in bytecode
self._bytecode = generate_bytecode(self.assembly)
File "/usr/local/lib/python3.8/dist-packages/vyper-0.2.8-py3.8.egg/vyper/compiler/phases.py", line 114, in assembly
self._assembly = generate_assembly(self.lll_nodes)
File "/usr/local/lib/python3.8/dist-packages/vyper-0.2.8-py3.8.egg/vyper/compiler/phases.py", line 102, in lll_nodes
self._gen_lll()
File "/usr/local/lib/python3.8/dist-packages/vyper-0.2.8-py3.8.egg/vyper/compiler/phases.py", line 97, in _gen_lll
self._lll_nodes, self._lll_runtime = generate_lll_nodes(self.global_ctx)
File "/usr/local/lib/python3.8/dist-packages/vyper-0.2.8-py3.8.egg/vyper/compiler/phases.py", line 90, in global_ctx
self.vyper_module_folded, self.interface_codes
File "/usr/local/lib/python3.8/dist-packages/vyper-0.2.8-py3.8.egg/vyper/compiler/phases.py", line 82, in vyper_module_folded
validate_semantics(self._vyper_module_folded, self.interface_codes)
File "/usr/local/lib/python3.8/dist-packages/vyper-0.2.8-py3.8.egg/vyper/context/validation/__init__.py", line 10, in validate_semantics
add_module_namespace(vyper_ast, interface_codes)
File "/usr/local/lib/python3.8/dist-packages/vyper-0.2.8-py3.8.egg/vyper/context/validation/module.py", line 36, in add_module_namespace
ModuleNodeVisitor(vy_module, interface_codes, namespace)
File "/usr/local/lib/python3.8/dist-packages/vyper-0.2.8-py3.8.egg/vyper/context/validation/module.py", line 69, in __init__
self.visit(node)
File "/usr/local/lib/python3.8/dist-packages/vyper-0.2.8-py3.8.egg/vyper/context/validation/base.py", line 19, in visit
visitor_fn(node)
File "/usr/local/lib/python3.8/dist-packages/vyper-0.2.8-py3.8.egg/vyper/context/validation/module.py", line 134, in visit_AnnAssign
interface_name = node.annotation.id
AttributeError: 'Int' object has no attribute 'id'
(just trying to compiler 54 quotes, on the other hand, works fine, so it is context, not just that syntactic construction)
Version Information
vyper --version
): 0.2.8+commit.d145722python --version
): Python 3.8.5pip freeze
):asttokens==2.0.4 Cython==0.29.21 dbus-python==1.2.16 pycryptodome==3.9.9 Pygments==2.3.1 PyGObject==3.36.0 python-afl==0.7.3 PyYAML==5.3.1 semantic-version==2.8.5 six==1.15.0 vyper==0.2.8
What's your issue about?
Note that this (like all fuzzing bugs I'll report) is minimized: removing one of the quotes makes it properly raise a SyntaxException: