1*d415bd75Srobert //===-- llvm-dis-fuzzer.cpp - Fuzzer for llvm-dis using lib/Fuzzer --------===// 2*d415bd75Srobert // 3*d415bd75Srobert // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4*d415bd75Srobert // See https://llvm.org/LICENSE.txt for license information. 5*d415bd75Srobert // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6*d415bd75Srobert // 7*d415bd75Srobert //===----------------------------------------------------------------------===// 8*d415bd75Srobert // 9*d415bd75Srobert // Fuzzer for LLVM bitcode reading. 10*d415bd75Srobert // 11*d415bd75Srobert //===----------------------------------------------------------------------===// 12*d415bd75Srobert 13*d415bd75Srobert #include "llvm/Bitcode/BitcodeReader.h" 14*d415bd75Srobert #include "llvm/IR/LLVMContext.h" 15*d415bd75Srobert #include "llvm/IR/Module.h" 16*d415bd75Srobert #include "llvm/Support/MemoryBuffer.h" 17*d415bd75Srobert 18*d415bd75Srobert using namespace llvm; 19*d415bd75Srobert LLVMFuzzerTestOneInput(const uint8_t * Data,size_t Size)20*d415bd75Srobertextern "C" int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size) { 21*d415bd75Srobert LLVMContext Context; 22*d415bd75Srobert auto Buffer = MemoryBuffer::getMemBuffer( 23*d415bd75Srobert StringRef(reinterpret_cast<const char *>(Data), Size), "Fuzzer input", 24*d415bd75Srobert /*RequiresNullTerminator=*/false); 25*d415bd75Srobert consumeError( 26*d415bd75Srobert parseBitcodeFile(Buffer->getMemBufferRef(), Context).takeError()); 27*d415bd75Srobert return 0; 28*d415bd75Srobert } 29