AFLplusplus / LibAFL

Advanced Fuzzing Library - Slot your Fuzzer together in Rust! Scales across cores and machines. For Windows, Android, MacOS, Linux, no_std, ...
Other
1.9k stars 292 forks source link

Implement grammar enumeration #2309

Open addisoncrump opened 2 weeks ago

addisoncrump commented 2 weeks ago

Context-free grammars are quite simple to enumerate: https://arxiv.org/pdf/2305.00522

This may be useful for implementing mutations as simple addition/subtraction.

addisoncrump commented 2 weeks ago

Oh, and second bonus: it sharply reduces the size requirements for our grammar-based inputs. For fields in the CFG which are represented by a higher complexity structure, we can simply store these as a queue of input segments ("to be dequeued when needed").