about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--docs/Changelog.md2
-rw-r--r--src/afl-forkserver.c14
2 files changed, 12 insertions, 4 deletions
diff --git a/docs/Changelog.md b/docs/Changelog.md
index 4e34baea..48c0ab06 100644
--- a/docs/Changelog.md
+++ b/docs/Changelog.md
@@ -4,6 +4,8 @@
   release of the tool. See README.md for the general instruction manual.
 
 ### Version ++4.21a (dev)
+  * afl-fuzz
+    - fix AFL_PERSISTENT_RECORD
   * afl-cc:
     - fixes for LTO and outdated afl-gcc mode
 
diff --git a/src/afl-forkserver.c b/src/afl-forkserver.c
index 149a973e..e5f64c81 100644
--- a/src/afl-forkserver.c
+++ b/src/afl-forkserver.c
@@ -27,6 +27,9 @@
  */
 
 #include "config.h"
+#ifdef AFL_PERSISTENT_RECORD
+  #include "afl-fuzz.h"
+#endif
 #include "types.h"
 #include "debug.h"
 #include "common.h"
@@ -2078,10 +2081,13 @@ store_persistent_record: {
     u32 len = fsrv->persistent_record_len[entry];
     if (likely(len && data)) {
 
-      snprintf(fn, sizeof(fn), persistent_out_fmt, fsrv->persistent_record_dir,
-               fsrv->persistent_record_cnt, writecnt++,
-               afl->file_extension ? "." : "",
-               afl->file_extension ? (const char *)afl->file_extension : "");
+      snprintf(
+          fn, sizeof(fn), persistent_out_fmt, fsrv->persistent_record_dir,
+          fsrv->persistent_record_cnt, writecnt++,
+          ((afl_state_t *)(fsrv->afl_ptr))->file_extension ? "." : "",
+          ((afl_state_t *)(fsrv->afl_ptr))->file_extension
+              ? (const char *)((afl_state_t *)(fsrv->afl_ptr))->file_extension
+              : "");
       int fd = open(fn, O_CREAT | O_TRUNC | O_WRONLY, 0644);
       if (fd >= 0) {