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