aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorvanhauser-thc <vh@thc.org>2022-09-15 10:13:46 +0200
committervanhauser-thc <vh@thc.org>2022-09-15 10:13:46 +0200
commitb7a2c7e6988f519f45e2305f2745355f6c3dd4ae (patch)
tree561d261b46dc94d2fb382a640518ca0bb294671d
parenta7877416a87506424053e52e41f7a995c05367a4 (diff)
downloadafl++-b7a2c7e6988f519f45e2305f2745355f6c3dd4ae.tar.gz
try LLVMFuzzerRunDriver support
-rw-r--r--utils/aflpp_driver/aflpp_driver.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/utils/aflpp_driver/aflpp_driver.c b/utils/aflpp_driver/aflpp_driver.c
index 4e4ea129..69379061 100644
--- a/utils/aflpp_driver/aflpp_driver.c
+++ b/utils/aflpp_driver/aflpp_driver.c
@@ -64,6 +64,8 @@ extern unsigned char *__afl_fuzz_ptr;
// libFuzzer interface is thin, so we don't include any libFuzzer headers.
int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size);
__attribute__((weak)) int LLVMFuzzerInitialize(int *argc, char ***argv);
+int LLVMFuzzerRunDriver(int *argc, char ***argv,
+ int (*callback)(const uint8_t *data, size_t size));
// Default nop ASan hooks for manual posisoning when not linking the ASan
// runtime
@@ -245,7 +247,7 @@ static int ExecuteFilesOnyByOne(int argc, char **argv) {
}
-int main(int argc, char **argv) {
+__attribute__((weak)) int main(int argc, char **argv) {
if (argc < 2 || strncmp(argv[1], "-h", 2) == 0)
printf(
@@ -265,6 +267,16 @@ int main(int argc, char **argv) {
"===================================================================\n",
argv[0], argv[0]);
+ return LLVMFuzzerRunDriver(&argc, &argv, LLVMFuzzerTestOneInput);
+
+}
+
+int LLVMFuzzerRunDriver(int *argcp, char ***argvp,
+ int (*callback)(const uint8_t *data, size_t size)) {
+
+ int argc = *argcp;
+ char **argv = *argvp;
+
if (getenv("AFL_GDB")) {
char cmd[64];