#include #include #include #include #include #include #include "dgif_fuzz_common.h" #include "libprotobuf-mutator/src/libfuzzer/libfuzzer_macro.h" #include "ProtoToGif.h" using namespace gifProtoFuzzer; DEFINE_PROTO_FUZZER(const GifProto &gif_proto) { // Instantiate ProtoConverter object ProtoConverter converter; std::string gifRawData = converter.gifProtoToString(gif_proto); if (const char *dump_path = getenv("PROTO_FUZZER_DUMP_PATH")) { // With libFuzzer binary run this to generate a GIF from proto: // PROTO_FUZZER_DUMP_PATH=x.gif ./fuzzer proto-input std::ofstream of(dump_path); of.write(gifRawData.data(), gifRawData.size()); } fuzz_dgif_extended((const uint8_t *)gifRawData.data(), gifRawData.size()); }