diff options
author | Mike Aizatsky <aizatsky@chromium.org> | 2016-05-24 23:14:29 +0000 |
---|---|---|
committer | Mike Aizatsky <aizatsky@chromium.org> | 2016-05-24 23:14:29 +0000 |
commit | af432a45e3218d29ce322ff2a074ad3b230b13f5 (patch) | |
tree | 4c6ded29bf06f8b08ca1a5d9d2af37e402917416 /llvm/lib/Fuzzer/test/FuzzerUnittest.cpp | |
parent | 515c15c2073c62caa1ff8ea8de072a3cf6db590c (diff) | |
download | bcm5719-llvm-af432a45e3218d29ce322ff2a074ad3b230b13f5.tar.gz bcm5719-llvm-af432a45e3218d29ce322ff2a074ad3b230b13f5.zip |
[libfuzzer] Trying random unit prefixes during corpus load.
Differential Revision: http://reviews.llvm.org/D20301
llvm-svn: 270632
Diffstat (limited to 'llvm/lib/Fuzzer/test/FuzzerUnittest.cpp')
-rw-r--r-- | llvm/lib/Fuzzer/test/FuzzerUnittest.cpp | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/llvm/lib/Fuzzer/test/FuzzerUnittest.cpp b/llvm/lib/Fuzzer/test/FuzzerUnittest.cpp index 7b49f2f08e4..66e9285eb05 100644 --- a/llvm/lib/Fuzzer/test/FuzzerUnittest.cpp +++ b/llvm/lib/Fuzzer/test/FuzzerUnittest.cpp @@ -13,6 +13,10 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size) { abort(); } +static int EmptyLLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size) { + return 0; +} + TEST(Fuzzer, CrossOver) { Random Rand(0); MutationDispatcher MD(Rand); @@ -423,3 +427,21 @@ TEST(Corpus, Distribution) { EXPECT_GT(Hist[i], TriesPerUnit / N / 3); } } + +TEST(Corpus, TruncateUnits) { + Random Rand(0); + MutationDispatcher MD(Rand); + Fuzzer::FuzzingOptions Options; + Options.OutputCorpus = ""; // stops from writing new units. + Fuzzer Fuzz(EmptyLLVMFuzzerTestOneInput, MD, Options); + + Fuzz.AddToCorpus(Unit(1024, static_cast<uint8_t>(1))); + Fuzz.ResetCoverage(); + + std::vector<Unit> NewCorpus; + Fuzz.TruncateUnits(&NewCorpus); + + // New corpus should have a shorter unit. + EXPECT_EQ(1ul, NewCorpus.size()); + EXPECT_EQ(1ul, NewCorpus[0].size()); +} |