tsffs
tsffs copied to clipboard
Enable callback-oriented harness API
We should enable a pair of APIs which looks like:
@tsffs.iface.tsffs.set_testcase_handler(testcase_handler)
Where testcase_handler is a Callable[[bytes], None] which is called with the testcase input. testcase_handler is then responsible for dispatching the testcase wherever is appropriate. In particular, it should not attempt to start/stop the fuzzing loop, it should only handle the testcase. This has the effect of separating the testcase handling logic from the fuzz loop logic, but requires a "blind start" API to be enabled.
@tsffs.iface.tsffs.start()
This API would take a snapshot through the TSFFS snapshot handling sequence, without handling testcases or buffers at all. When a new testcase is generated, it will be passed to the testcase handler.