protofuzz icon indicating copy to clipboard operation
protofuzz copied to clipboard

Cannot handle recursive protobufs

Open ezyang opened this issue 7 years ago • 0 comments

Repro:

from protofuzz import protofuzz

fuzzers = protofuzz.from_description_string("""
    message A {
     optional B b = 1;
    }
    message B {
     optional A a = 1;
    }
""")
for obj in fuzzers['A'].permute():
    print(obj)

Result:

...lots of stuff...
egg/protofuzz/protofuzz.py", line 113, in descriptor_to_generator
    generator = _prototype_to_generator(descriptor, cls)
  File "/Users/ezyang/Dev/onnx-env/lib/python3.6/site-packages/protofuzz-0.1-py3.6.egg/protofuzz/protofuzz.py", line 100, in _prototype_to_generator
    generator = descriptor_to_generator(descriptor.message_type, cls)
  File "/Users/ezyang/Dev/onnx-env/lib/python3.6/site-packages/protofuzz-0.1-py3.6.egg/protofuzz/protofuzz.py", line 113, in descriptor_to_generator
    generator = _prototype_to_generator(descriptor, cls)
  File "/Users/ezyang/Dev/onnx-env/lib/python3.6/site-packages/protofuzz-0.1-py3.6.egg/protofuzz/protofuzz.py", line 100, in _prototype_to_generator
    generator = descriptor_to_generator(descriptor.message_type, cls)
  File "/Users/ezyang/Dev/onnx-env/lib/python3.6/site-packages/protofuzz-0.1-py3.6.egg/protofuzz/protofuzz.py", line 113, in descriptor_to_generator
    generator = _prototype_to_generator(descriptor, cls)
  File "/Users/ezyang/Dev/onnx-env/lib/python3.6/site-packages/protofuzz-0.1-py3.6.egg/protofuzz/protofuzz.py", line 83, in _prototype_to_generator
    if descriptor.type in ints32+ints64:
RecursionError: maximum recursion depth exceeded in comparison

ezyang avatar Oct 26 '17 20:10 ezyang