[libFuzzer] Add dummy call of LLVMFuzzerTestOneInput to afl_driver.

Summary:
Add dummy call of LLVMFuzzerTestOneInput to afl_driver before it starts
executing on actual inputs. Do this so that first time initialization
performed by LLVMFuzzerTestOneInput is not considered code covered by
a particular input.

Patch By: metzman

Reviewers: kcc, morehouse

Reviewed By: kcc

Subscribers: llvm-commits, Sanitizers

Differential Revision: https://reviews.llvm.org/D41193

llvm-svn: 320643
This commit is contained in:
Matt Morehouse 2017-12-13 22:02:44 +00:00
parent 0fc5599f52
commit 6e294952b6
1 changed files with 7 additions and 1 deletions

View File

@ -88,7 +88,7 @@ statistics from the file. If that fails then the process will quit.
// to the file as well, if the error occurs after the duplication is performed.
#define CHECK_ERROR(cond, error_message) \
if (!(cond)) { \
fprintf(stderr, (error_message)); \
fprintf(stderr, "%s\n", (error_message)); \
abort(); \
}
@ -308,6 +308,12 @@ int main(int argc, char **argv) {
return ExecuteFilesOnyByOne(argc, argv);
assert(N > 0);
// Call LLVMFuzzerTestOneInput here so that coverage caused by initialization
// on the first execution of LLVMFuzzerTestOneInput is ignored.
uint8_t dummy_input[1] = {0};
LLVMFuzzerTestOneInput(dummy_input, 1);
time_t unit_time_secs;
int num_runs = 0;
while (__afl_persistent_loop(N)) {