diff options
| author | Kostya Serebryany <kcc@google.com> | 2017-01-18 00:55:29 +0000 |
|---|---|---|
| committer | Kostya Serebryany <kcc@google.com> | 2017-01-18 00:55:29 +0000 |
| commit | 9d0f02af3d21321616ca82e67fbdbd4965f8c483 (patch) | |
| tree | 964bad68ffa8baeb875d75a44abb943268046e01 /llvm/lib/Fuzzer | |
| parent | 924978bb43c57ea490514934fab97bccfddd1f7f (diff) | |
| download | bcm5719-llvm-9d0f02af3d21321616ca82e67fbdbd4965f8c483.tar.gz bcm5719-llvm-9d0f02af3d21321616ca82e67fbdbd4965f8c483.zip | |
[libFuzzer] exit(1) on failed merge
llvm-svn: 292319
Diffstat (limited to 'llvm/lib/Fuzzer')
| -rw-r--r-- | llvm/lib/Fuzzer/FuzzerMerge.cpp | 6 | ||||
| -rw-r--r-- | llvm/lib/Fuzzer/test/merge.test | 4 |
2 files changed, 10 insertions, 0 deletions
diff --git a/llvm/lib/Fuzzer/FuzzerMerge.cpp b/llvm/lib/Fuzzer/FuzzerMerge.cpp index 9e559115680..344d7a83959 100644 --- a/llvm/lib/Fuzzer/FuzzerMerge.cpp +++ b/llvm/lib/Fuzzer/FuzzerMerge.cpp @@ -239,15 +239,21 @@ void Fuzzer::CrashResistantMerge(const std::vector<std::string> &Args, // Execute the inner process untill it passes. // Every inner process should execute at least one input. std::string BaseCmd = CloneArgsWithoutX(Args, "keep-all-flags"); + bool Success = false; for (size_t i = 1; i <= AllFiles.size(); i++) { Printf("MERGE-OUTER: attempt %zd\n", i); auto ExitCode = ExecuteCommand(BaseCmd + " -merge_control_file=" + CFPath); if (!ExitCode) { Printf("MERGE-OUTER: succesfull in %zd attempt(s)\n", i); + Success = true; break; } } + if (!Success) { + Printf("MERGE-OUTER: zero succesfull attempts, exiting\n"); + exit(1); + } // Read the control file and do the merge. Merger M; std::ifstream IF(CFPath); diff --git a/llvm/lib/Fuzzer/test/merge.test b/llvm/lib/Fuzzer/test/merge.test index 5c7d30e41ca..e1445c2b4c1 100644 --- a/llvm/lib/Fuzzer/test/merge.test +++ b/llvm/lib/Fuzzer/test/merge.test @@ -52,3 +52,7 @@ TMPDIR: MERGE-OUTER: failed to write to the control file: DIR_DOES_NOT_EXIST/lib # Check that we can report an error if file size exceeded RUN: (ulimit -f 1; not LLVMFuzzer-FullCoverageSetTest -merge=1 %tmp/T1 %tmp/T2 2>&1 | FileCheck %s --check-prefix=SIGXFSZ) SIGXFSZ: ERROR: libFuzzer: file size exceeded + +RUN: rm -rf %tmp/T1/* %tmp/T2/* +RUN: not LLVMFuzzer-FullCoverageSetTest -merge=1 %tmp/T1 %tmp/T2 2>&1 | FileCheck %s --check-prefix=EMPTY +EMPTY: MERGE-OUTER: zero succesfull attempts, exiting |

