[llvm] r246689 - [libFuzzer] honour -only_ascii=1 when reading the initial corpus. Also, remove ugly #ifdef

Kostya Serebryany via llvm-commits llvm-commits at lists.llvm.org
Wed Sep 2 12:08:08 PDT 2015


Author: kcc
Date: Wed Sep  2 14:08:08 2015
New Revision: 246689

URL: http://llvm.org/viewvc/llvm-project?rev=246689&view=rev
Log:
[libFuzzer] honour -only_ascii=1 when reading the initial corpus. Also, remove ugly #ifdef

Modified:
    llvm/trunk/lib/Fuzzer/FuzzerInternal.h
    llvm/trunk/lib/Fuzzer/FuzzerLoop.cpp
    llvm/trunk/lib/Fuzzer/FuzzerUtil.cpp

Modified: llvm/trunk/lib/Fuzzer/FuzzerInternal.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Fuzzer/FuzzerInternal.h?rev=246689&r1=246688&r2=246689&view=diff
==============================================================================
--- llvm/trunk/lib/Fuzzer/FuzzerInternal.h (original)
+++ llvm/trunk/lib/Fuzzer/FuzzerInternal.h Wed Sep  2 14:08:08 2015
@@ -53,6 +53,7 @@ void ComputeSHA1(const uint8_t *Data, si
 // Changes U to contain only ASCII (isprint+isspace) characters.
 // Returns true iff U has been changed.
 bool ToASCII(Unit &U);
+bool IsASCII(const Unit &U);
 
 int NumberOfCpuCores();
 

Modified: llvm/trunk/lib/Fuzzer/FuzzerLoop.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Fuzzer/FuzzerLoop.cpp?rev=246689&r1=246688&r2=246689&view=diff
==============================================================================
--- llvm/trunk/lib/Fuzzer/FuzzerLoop.cpp (original)
+++ llvm/trunk/lib/Fuzzer/FuzzerLoop.cpp Wed Sep  2 14:08:08 2015
@@ -136,6 +136,8 @@ void Fuzzer::ShuffleAndMinimize() {
       U.clear();
       size_t Last = std::min(First + Options.MaxLen, C.size());
       U.insert(U.begin(), C.begin() + First, C.begin() + Last);
+      if (Options.OnlyASCII)
+        ToASCII(U);
       size_t NewCoverage = RunOne(U);
       if (NewCoverage) {
         MaxCov = NewCoverage;
@@ -256,11 +258,7 @@ void Fuzzer::WriteToOutputCorpus(const U
   WriteToFile(U, Path);
   if (Options.Verbosity >= 2)
     Printf("Written to %s\n", Path.c_str());
-#ifdef DEBUG
-  if (Options.OnlyASCII)
-    for (auto X : U)
-      assert(isprint(X) || isspace(X));
-#endif
+  assert(!Options.OnlyASCII || IsASCII(U));
 }
 
 void Fuzzer::WriteUnitToFileWithPrefix(const Unit &U, const char *Prefix) {

Modified: llvm/trunk/lib/Fuzzer/FuzzerUtil.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Fuzzer/FuzzerUtil.cpp?rev=246689&r1=246688&r2=246689&view=diff
==============================================================================
--- llvm/trunk/lib/Fuzzer/FuzzerUtil.cpp (original)
+++ llvm/trunk/lib/Fuzzer/FuzzerUtil.cpp Wed Sep  2 14:08:08 2015
@@ -86,4 +86,10 @@ bool ToASCII(Unit &U) {
   return Changed;
 }
 
+bool IsASCII(const Unit &U) {
+  for (auto X : U)
+    if (!(isprint(X) || isspace(X))) return false;
+  return true;
+}
+
 }  // namespace fuzzer




More information about the llvm-commits mailing list