[PATCH] D119000: [Bitcode] Add fuzzer for bitcode reading

Nikita Popov via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Fri Feb 4 07:46:28 PST 2022


nikic created this revision.
nikic added a reviewer: dblaikie.
Herald added subscribers: ormris, mgorny.
nikic requested review of this revision.
Herald added a project: LLVM.
Herald added a subscriber: llvm-commits.

Inspired by the discussion on D118694 <https://reviews.llvm.org/D118694>, this adds a straightforward fuzzer for bitcode reading.


https://reviews.llvm.org/D119000

Files:
  llvm/tools/llvm-dis-fuzzer/CMakeLists.txt
  llvm/tools/llvm-dis-fuzzer/llvm-dis-fuzzer.cpp


Index: llvm/tools/llvm-dis-fuzzer/llvm-dis-fuzzer.cpp
===================================================================
--- /dev/null
+++ llvm/tools/llvm-dis-fuzzer/llvm-dis-fuzzer.cpp
@@ -0,0 +1,25 @@
+//===-- llvm-dis-fuzzer.cpp - Fuzzer for llvm-dis using lib/Fuzzer --------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+//
+// Fuzzer for LLVM bitcode reading.
+//
+//===----------------------------------------------------------------------===//
+
+#include "llvm/Bitcode/BitcodeReader.h"
+#include "llvm/Support/MemoryBuffer.h"
+
+using namespace llvm;
+
+extern "C" int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size) {
+  LLVMContext Context;
+  auto Buffer = MemoryBuffer::getMemBuffer(
+      StringRef(reinterpret_cast<const char *>(Data), Size), "Fuzzer input",
+      /*RequiresNullTerminator=*/false);
+  consumeError(parseBitcodeFile(Buffer->getMemBufferRef(), Context).takeError());
+  return 0;
+}
Index: llvm/tools/llvm-dis-fuzzer/CMakeLists.txt
===================================================================
--- /dev/null
+++ llvm/tools/llvm-dis-fuzzer/CMakeLists.txt
@@ -0,0 +1,6 @@
+set(LLVM_LINK_COMPONENTS
+  BitReader
+)
+add_llvm_fuzzer(llvm-dis-fuzzer
+  llvm-dis-fuzzer.cpp
+  )


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D119000.405970.patch
Type: text/x-patch
Size: 1476 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20220204/c4ff4a2c/attachment.bin>


More information about the llvm-commits mailing list