about summary refs log tree commit diff
path: root/utils/aflpp_driver/aflpp_driver.c
diff options
context:
space:
mode:
Diffstat (limited to 'utils/aflpp_driver/aflpp_driver.c')
-rw-r--r--utils/aflpp_driver/aflpp_driver.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/utils/aflpp_driver/aflpp_driver.c b/utils/aflpp_driver/aflpp_driver.c
index 9ffb2383..6e992266 100644
--- a/utils/aflpp_driver/aflpp_driver.c
+++ b/utils/aflpp_driver/aflpp_driver.c
@@ -80,6 +80,7 @@ extern unsigned int   __afl_map_size;
 /*__attribute__((weak))*/ int LLVMFuzzerTestOneInput(const uint8_t *Data,
                                                      size_t         Size);
 __attribute__((weak)) int     LLVMFuzzerInitialize(int *argc, char ***argv);
+__attribute__((weak)) void    LLVMFuzzerCleanup(void);
 __attribute__((weak)) int     LLVMFuzzerRunDriver(
         int *argc, char ***argv, int (*callback)(const uint8_t *data, size_t size));
 
@@ -338,6 +339,7 @@ __attribute__((weak)) int LLVMFuzzerRunDriver(
   output_file = stderr;
   maybe_duplicate_stderr();
   maybe_close_fd_mask();
+
   if (LLVMFuzzerInitialize) {
 
     fprintf(stderr, "Running LLVMFuzzerInitialize ...\n");
@@ -441,6 +443,14 @@ __attribute__((weak)) int LLVMFuzzerRunDriver(
 
   }
 
+  if (LLVMFuzzerCleanup) {
+
+    fprintf(stderr, "Running LLVMFuzzerCleanup ...\n");
+    LLVMFuzzerCleanup();
+    fprintf(stderr, "Exiting ...\n");
+
+  }
+
   return 0;
 
 }