From: Kostya Serebryany Date: Fri, 31 Jul 2015 22:07:17 +0000 (+0000) Subject: [libFuzzer] limit the size of the inputs printed to stderr X-Git-Url: http://plrg.eecs.uci.edu/git/?p=oota-llvm.git;a=commitdiff_plain;h=427b5a50cf76ac2aca2f3f6636e0550cb1dc780f [libFuzzer] limit the size of the inputs printed to stderr git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@243795 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Fuzzer/FuzzerLoop.cpp b/lib/Fuzzer/FuzzerLoop.cpp index e659223fe1a..5e8e2e4aae3 100644 --- a/lib/Fuzzer/FuzzerLoop.cpp +++ b/lib/Fuzzer/FuzzerLoop.cpp @@ -14,6 +14,7 @@ #include namespace fuzzer { +static const size_t kMaxUnitSizeToPrint = 4096; // Only one Fuzzer per process. static Fuzzer *F; @@ -68,7 +69,8 @@ void Fuzzer::AlarmCallback() { Printf("ALARM: working on the last Unit for %zd seconds\n", Seconds); Printf(" and the timeout value is %d (use -timeout=N to change)\n", Options.UnitTimeoutSec); - Print(CurrentUnit, "\n"); + if (CurrentUnit.size() <= kMaxUnitSizeToPrint) + Print(CurrentUnit, "\n"); PrintUnitInASCIIOrTokens(CurrentUnit, "\n"); WriteUnitToFileWithPrefix(CurrentUnit, "timeout-"); exit(1); @@ -160,7 +162,8 @@ size_t Fuzzer::RunOne(const Unit &U) { if (TimeOfUnit > TimeOfLongestUnitInSeconds) { TimeOfLongestUnitInSeconds = TimeOfUnit; Printf("Longest unit: %zd s:\n", TimeOfLongestUnitInSeconds); - Print(U, "\n"); + if (U.size() <= kMaxUnitSizeToPrint) + Print(U, "\n"); WriteUnitToFileWithPrefix(U, "long-running-unit-"); } return Res; @@ -252,8 +255,11 @@ void Fuzzer::WriteToOutputCorpus(const Unit &U) { void Fuzzer::WriteUnitToFileWithPrefix(const Unit &U, const char *Prefix) { std::string Path = Prefix + Hash(U); WriteToFile(U, Path); - Printf("Test unit written to %s\nBase64: ", Path.c_str()); - PrintFileAsBase64(Path); + Printf("Test unit written to %s\n", Path.c_str()); + if (U.size() <= kMaxUnitSizeToPrint) { + Printf("Base64: "); + PrintFileAsBase64(Path); + } } void Fuzzer::SaveCorpus() {