From 41a5827cd327b68342691e42d69d243db3040528 Mon Sep 17 00:00:00 2001 From: Kostya Serebryany Date: Thu, 9 Jun 2016 01:20:35 +0000 Subject: [PATCH] [libFuzzer] add one more OOM test, which we currently don't handle very well git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@272240 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Fuzzer/test/CMakeLists.txt | 1 + lib/Fuzzer/test/OneHugeAllocTest.cpp | 29 +++++++++++++++++++++++++++++ 2 files changed, 30 insertions(+) create mode 100644 lib/Fuzzer/test/OneHugeAllocTest.cpp diff --git a/lib/Fuzzer/test/CMakeLists.txt b/lib/Fuzzer/test/CMakeLists.txt index 9421606aec0..9f95657b978 100644 --- a/lib/Fuzzer/test/CMakeLists.txt +++ b/lib/Fuzzer/test/CMakeLists.txt @@ -78,6 +78,7 @@ set(Tests NullDerefTest NullDerefOnEmptyTest NthRunCrashTest + OneHugeAllocTest OutOfMemoryTest RepeatedMemcmp SimpleCmpTest diff --git a/lib/Fuzzer/test/OneHugeAllocTest.cpp b/lib/Fuzzer/test/OneHugeAllocTest.cpp new file mode 100644 index 00000000000..617fa20fa2e --- /dev/null +++ b/lib/Fuzzer/test/OneHugeAllocTest.cpp @@ -0,0 +1,29 @@ +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. + +// Tests OOM handling when there is a single large allocation. +#include +#include +#include +#include +#include +#include +#include + +static volatile char *SinkPtr; + +extern "C" int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size) { + if (Size > 0 && Data[0] == 'H') { + if (Size > 1 && Data[1] == 'i') { + if (Size > 2 && Data[2] == '!') { + size_t kSize = (size_t)1 << 31; + char *p = new char[kSize]; + memset(p, 0, kSize); + SinkPtr = p; + delete [] p; + } + } + } + return 0; +} + -- 2.11.0