deepstate
deepstate copied to clipboard
Allow frontend executors to consume configuration files
With a refactored frontend API we are now able to instantiate frontend objects using Frontend.init_fuzzer(), which takes advantage of setattr() to set object attributes from a dict.
We should take advantage of this and offer a way for executors and the ensembler (which now inherits from DeepStateFrontend, making it a fuzzer executor as well) to alternatively consume configuration files rather than just command line arguments:
$ deepstate-afl --config options.conf
$ deepstate-ensembler --config options.conf
Our configuration could look something like this:
# frontend API would determine whether if source to compile or already compiled binary
test_case: /path/to/binary # ... or /path/to/harness.cpp
input_seeds: /path/to/seeds
output_dir: /out
which_test: "Some_Test"
timeout: 100
# ... other fuzzer-specific arguments
This would be cool to have for something like DeepState running on a containerized microservice, which can intake test harness artifacts plus a configuration for analysis.