[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
This commit is contained in:
Kostya Serebryany 2015-07-31 22:07:17 +00:00
parent cab56781b5
commit 427b5a50cf
1 changed files with 10 additions and 4 deletions

View File

@ -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() {