diff options
| -rw-r--r-- | llvm/lib/Fuzzer/FuzzerLoop.cpp | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/llvm/lib/Fuzzer/FuzzerLoop.cpp b/llvm/lib/Fuzzer/FuzzerLoop.cpp index e659223fe1a..5e8e2e4aae3 100644 --- a/llvm/lib/Fuzzer/FuzzerLoop.cpp +++ b/llvm/lib/Fuzzer/FuzzerLoop.cpp @@ -14,6 +14,7 @@ #include <algorithm> 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() { |

