about summary refs log tree commit diff
path: root/src/afl-fuzz-run.c
diff options
context:
space:
mode:
authorvan Hauser <vh@thc.org>2023-04-17 10:26:33 +0200
committerGitHub <noreply@github.com>2023-04-17 10:26:33 +0200
commita326c23210dc2ace37bf1cadcc4521cf5d0b58cb (patch)
tree5e97dc274212181cd0117057492bce84809e1a4d /src/afl-fuzz-run.c
parent4f2d9eeaaa6b702ef28eb883f9000321eaf1fe9b (diff)
parent7f734c96d187312868178e8ead95dc103c557c1f (diff)
downloadafl++-a326c23210dc2ace37bf1cadcc4521cf5d0b58cb.tar.gz
Merge pull request #1706 from AFLplusplus/dev 4.06c
push to stable, 4.06c release
Diffstat (limited to 'src/afl-fuzz-run.c')
-rw-r--r--src/afl-fuzz-run.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/afl-fuzz-run.c b/src/afl-fuzz-run.c
index f5425011..4d56f3a7 100644
--- a/src/afl-fuzz-run.c
+++ b/src/afl-fuzz-run.c
@@ -133,7 +133,15 @@ write_to_testcase(afl_state_t *afl, void **mem, u32 len, u32 fix) {
 
     }
 
-    if (new_mem != *mem) { *mem = new_mem; }
+    if (new_mem != *mem && new_mem != NULL && new_size > 0) {
+
+      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));
+
+    }
 
     if (unlikely(afl->custom_mutators_count)) {