`Centipede` integration (engine)
Implements the fuzzing engine interface of Centipede, as the first of a series of PRs for Centipede integration.
A draft engine.py for now to double-check it is on the right track, will come back with more fixes later:
- Remove redundant code blocks;
- Remove redundant packages;
- Fix the format/lint/test errors.
Could you please also add some integration tests? See the libFuzzer/afl examples.
Could you please also add some integration tests? See the libFuzzer/afl examples.
Sure! I am also editing the engine interface to allow adding sanitized binaries.
Could you please also add some integration tests? See the libFuzzer/afl examples.
Sure! I am also editing the
engineinterface to allow adding sanitized binaries.
Maybe we should unpack the binaries in a way that make this unnecessary. E.g. unpack to $PATH/blah/unsanitized/target and $PATH/blah/address/target? Changing the interface will mean we need to change CFL too btw
Could you please also add some integration tests? See the libFuzzer/afl examples.
Sure! I am also editing the
engineinterface to allow adding sanitized binaries.Maybe we should unpack the binaries in a way that make this unnecessary. E.g. unpack to $PATH/blah/unsanitized/target and $PATH/blah/address/target? Changing the interface will mean we need to change CFL too btw
Basically I want to avoid making a change to API that is very centipede-specific.
Could you please also add some integration tests? See the libFuzzer/afl examples.
Sure! I am also editing the
engineinterface to allow adding sanitized binaries.Maybe we should unpack the binaries in a way that make this unnecessary. E.g. unpack to $PATH/blah/unsanitized/target and $PATH/blah/address/target? Changing the interface will mean we need to change CFL too btw
Basically I want to avoid making a change to API that is very centipede-specific.
Ah sorry that I did not update here, I gave up on that because I learnt that I can overwrite the interface function in Centipede's child instance : )
I will test that later before committing, but I think it should work.
Could you please also add some integration tests? See the libFuzzer/afl examples.
Sure! I am also editing the
engineinterface to allow adding sanitized binaries.Maybe we should unpack the binaries in a way that make this unnecessary. E.g. unpack to $PATH/blah/unsanitized/target and $PATH/blah/address/target? Changing the interface will mean we need to change CFL too btw
Basically I want to avoid making a change to API that is very centipede-specific.
Ah sorry that I did not update here, I gave up on that because I learnt that I can overwrite the interface function in
Centipede's child instance : ) I will test that later before committing, but I think it should work.
Maybe I'm misunderstanding but then won't the caller need to support calling two APIs instead of one? This seems worse than either of the two above cases I thought of
Could you please also add some integration tests? See the libFuzzer/afl examples.
Sure! I am also editing the
engineinterface to allow adding sanitized binaries.Maybe we should unpack the binaries in a way that make this unnecessary. E.g. unpack to $PATH/blah/unsanitized/target and $PATH/blah/address/target? Changing the interface will mean we need to change CFL too btw
Basically I want to avoid making a change to API that is very centipede-specific.
Ah sorry that I did not update here, I gave up on that because I learnt that I can overwrite the interface function in
Centipede's child instance : ) I will test that later before committing, but I think it should work.Maybe I'm misunderstanding but then won't the caller need to support calling two APIs instead of one? This seems worse than either of the two above cases I thought of
+1 to keeping the interface the same. The build_manager part can be smarter about where to unpack so that the Engine implementation part here can find the sanitized binaries.
Cloud build failed due to two compatibility reasons:
error while loading shared libraries: libcrypto.so.3: cannot open shared object file: No such file or directory/lib/x86_64-linux-gnu/libc.so.6: version 'GLIBC_2.32' not found (required by /path/to/centipede/test_data/__extra_build/test_fuzzer)\n
please also address all of @jonathanmetzman's comments.
I reckon these are addressed in Fix workdir path + Replace os.path with Path : )