27 lines
		
	
	
		
			795 B
		
	
	
	
		
			C++
		
	
	
	
			
		
		
	
	
			27 lines
		
	
	
		
			795 B
		
	
	
	
		
			C++
		
	
	
	
#include <stdlib.h>
 | 
						|
#include <stdint.h>
 | 
						|
#include <string.h>
 | 
						|
#include <string>
 | 
						|
#include <sstream>
 | 
						|
#include <fstream>
 | 
						|
#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());
 | 
						|
} |