mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2025-02-13 22:00:14 +00:00
[Fuzzer] Afl driver changing iterations handling
Handling differently the iterations with the type limit and eventually an error message. Reviewers: morehouse, kcc Reviewed By: morehouse Differential Revision: https://reviews.llvm.org/D47880 llvm-svn: 334510
This commit is contained in:
parent
51ef8dabcd
commit
301855fb0d
@ -59,6 +59,7 @@ statistics from the file. If that fails then the process will quit.
|
||||
#include <sys/resource.h>
|
||||
#include <sys/time.h>
|
||||
#include <unistd.h>
|
||||
#include <limits.h>
|
||||
|
||||
#include <fstream>
|
||||
#include <iostream>
|
||||
@ -305,6 +306,18 @@ int ExecuteFilesOnyByOne(int argc, char **argv) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void set_iterations(int *N, const char *arg) {
|
||||
char *next_char;
|
||||
long NL = strtol(arg, &next_char, 10);
|
||||
if (NL < 1 || NL > INT_MAX || *next_char != '\0') {
|
||||
fprintf(stderr, "WARNING: iterations invalid `%s`\n",
|
||||
arg);
|
||||
::exit(-1);
|
||||
}
|
||||
|
||||
*N = static_cast<int>(NL);
|
||||
}
|
||||
|
||||
int main(int argc, char **argv) {
|
||||
fprintf(stderr,
|
||||
"======================= INFO =========================\n"
|
||||
@ -331,11 +344,12 @@ int main(int argc, char **argv) {
|
||||
|
||||
int N = 1000;
|
||||
if (argc == 2 && argv[1][0] == '-')
|
||||
N = atoi(argv[1] + 1);
|
||||
else if(argc == 2 && (N = atoi(argv[1])) > 0)
|
||||
fprintf(stderr, "WARNING: using the deprecated call style `%s %d`\n",
|
||||
argv[0], N);
|
||||
else if (argc > 1)
|
||||
set_iterations(&N, argv[1] + 1);
|
||||
else if(argc == 2) {
|
||||
fprintf(stderr, "WARNING: using the deprecated call style `%s %d`\n",
|
||||
argv[0], N);
|
||||
set_iterations(&N, argv[1]);
|
||||
} else if (argc > 1)
|
||||
return ExecuteFilesOnyByOne(argc, argv);
|
||||
|
||||
assert(N > 0);
|
||||
|
@ -21,9 +21,16 @@ CHECK3: __afl_persistent_loop calle, Count = 666
|
||||
CHECK3: LLVMFuzzerTestOneInput called; Size = 3
|
||||
|
||||
|
||||
RUN: %run %t-AFLDriverTest %t.file3 2>&1 | FileCheck %s --check-prefix=CHECK4
|
||||
CHECK4: LLVMFuzzerTestOneInput called; Size = 3
|
||||
RUN: not %run %t-AFLDriverTest %t.file3 2>&1 | FileCheck %s --check-prefix=CHECK4
|
||||
CHECK4: WARNING: using the deprecated call style `{{.*}} 1000`
|
||||
CHECK4: WARNING: iterations invalid `{{.*}}`
|
||||
|
||||
RUN: %run %t-AFLDriverTest %t.file3 %t.file4 2>&1 | FileCheck %s --check-prefix=CHECK5
|
||||
CHECK5: LLVMFuzzerTestOneInput called; Size = 3
|
||||
CHECK5: LLVMFuzzerTestOneInput called; Size = 4
|
||||
|
||||
RUN: not %run %t-AFLDriverTest < %t.file3 --1 2>&1 | FileCheck %s --check-prefix=CHECK6
|
||||
CHECK6: WARNING: iterations invalid `-1`
|
||||
|
||||
RUN: not %run %t-AFLDriverTest < %t.file3 -Invalid 2>&1 | FileCheck %s --check-prefix=CHECK7
|
||||
CHECK7: WARNING: iterations invalid `Invalid`
|
||||
|
Loading…
x
Reference in New Issue
Block a user