about summary refs log tree commit diff
path: root/src/afl-fuzz-run.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/afl-fuzz-run.c')
-rw-r--r--src/afl-fuzz-run.c24
1 files changed, 17 insertions, 7 deletions
diff --git a/src/afl-fuzz-run.c b/src/afl-fuzz-run.c
index 4d56f3a7..2d53de93 100644
--- a/src/afl-fuzz-run.c
+++ b/src/afl-fuzz-run.c
@@ -133,13 +133,14 @@ write_to_testcase(afl_state_t *afl, void **mem, u32 len, u32 fix) {
 
     }
 
-    if (new_mem != *mem && new_mem != NULL && new_size > 0) {
+    if (new_mem != *mem && new_mem != NULL && new_size > 0
+        && !afl->afl_env.afl_post_process_keep_original) {
 
-      u8 *new_buf = afl_realloc(AFL_BUF_PARAM(out_scratch), new_size);
-      if (unlikely(!new_buf)) { PFATAL("alloc"); }
-      *mem = new_buf;
-      memcpy(*mem, new_mem, new_size);
-      afl_swap_bufs(AFL_BUF_PARAM(out), AFL_BUF_PARAM(out_scratch));
+        u8 *new_buf = afl_realloc(AFL_BUF_PARAM(out_scratch), new_size);
+        if (unlikely(!new_buf)) { PFATAL("alloc"); }
+        *mem = new_buf;
+        memcpy(*mem, new_mem, new_size);
+        afl_swap_bufs(AFL_BUF_PARAM(out), AFL_BUF_PARAM(out_scratch));
 
     }
 
@@ -161,7 +162,16 @@ write_to_testcase(afl_state_t *afl, void **mem, u32 len, u32 fix) {
     if (likely(!sent)) {
 
       /* everything as planned. use the potentially new data. */
-      afl_fsrv_write_to_testcase(&afl->fsrv, *mem, new_size);
+
+      if (likely(!afl->afl_env.afl_post_process_keep_original)) {
+
+        afl_fsrv_write_to_testcase(&afl->fsrv, *mem, new_size);
+
+      } else {
+
+        afl_fsrv_write_to_testcase(&afl->fsrv, new_mem, new_size);
+
+      }
       len = new_size;
 
     }