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

source code of llvm/tools/llvm-dis-fuzzer/llvm-dis-fuzzer.cpp