From ba2d199d493e3cb2a6f87ff38e2830a35142714f Mon Sep 17 00:00:00 2001 From: Mike Aizatsky Date: Wed, 2 Dec 2015 22:43:53 +0000 Subject: [PATCH] Libfuzzer: do not pass null into user function Differential Revision: http://reviews.llvm.org/D15098 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@254558 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Fuzzer/FuzzerLoop.cpp | 6 +++++- lib/Fuzzer/test/SimpleTest.cpp | 2 ++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/lib/Fuzzer/FuzzerLoop.cpp b/lib/Fuzzer/FuzzerLoop.cpp index 7aea169b7ae..9c52a4dbe77 100644 --- a/lib/Fuzzer/FuzzerLoop.cpp +++ b/lib/Fuzzer/FuzzerLoop.cpp @@ -238,7 +238,11 @@ void Fuzzer::RunOneAndUpdateCorpus(Unit &U) { } void Fuzzer::ExecuteCallback(const Unit &U) { - int Res = USF.TargetFunction(U.data(), U.size()); + const uint8_t *Data = U.data(); + uint8_t EmptyData; + if (!Data) + Data = &EmptyData; + int Res = USF.TargetFunction(Data, U.size()); (void)Res; assert(Res == 0); } diff --git a/lib/Fuzzer/test/SimpleTest.cpp b/lib/Fuzzer/test/SimpleTest.cpp index 6811d115d96..04225a889f5 100644 --- a/lib/Fuzzer/test/SimpleTest.cpp +++ b/lib/Fuzzer/test/SimpleTest.cpp @@ -1,4 +1,5 @@ // Simple test for a fuzzer. The fuzzer must find the string "Hi!". +#include #include #include #include @@ -7,6 +8,7 @@ static volatile int Sink; extern "C" int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size) { + assert(Data); if (Size > 0 && Data[0] == 'H') { Sink = 1; if (Size > 1 && Data[1] == 'i') { -- 2.34.1