1 // Copyright 2015 The Chromium Authors 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include <stddef.h> 6 #include <stdint.h> 7 8 #include "courgette/courgette.h" 9 #include "courgette/courgette_flow.h" 10 #include "courgette/region.h" 11 12 // Entry point for LibFuzzer. LLVMFuzzerTestOneInput(const uint8_t * data,size_t size)13extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { 14 courgette::CourgetteFlow flow; 15 courgette::RegionBuffer buffer(courgette::Region(data, size)); 16 flow.ReadDisassemblerFromBuffer(flow.ONLY, buffer); 17 flow.CreateAssemblyProgramFromDisassembler(flow.ONLY, false); 18 flow.CreateEncodedProgramFromDisassemblerAndAssemblyProgram(flow.ONLY); 19 flow.WriteSinkStreamSetFromEncodedProgram(flow.ONLY); 20 // Not bothering to check |flow.failed()|. 21 return 0; 22 } 23