about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/afl-forkserver.c14
-rw-r--r--src/afl-fuzz.c50
2 files changed, 34 insertions, 30 deletions
diff --git a/src/afl-forkserver.c b/src/afl-forkserver.c
index a6128220..e6738a71 100644
--- a/src/afl-forkserver.c
+++ b/src/afl-forkserver.c
@@ -370,7 +370,7 @@ void afl_fsrv_start(afl_forkserver_t *fsrv, char **argv,
     fsrv->persistent_record_data =
         (u8 **)ck_alloc(fsrv->persistent_record * sizeof(u8 *));
     fsrv->persistent_record_len =
-        (u32 **)ck_alloc(fsrv->persistent_record * sizeof(u32));
+        (u32 *)ck_alloc(fsrv->persistent_record * sizeof(u32));
 
     if (!fsrv->persistent_record_data || !fsrv->persistent_record_len) {
 
@@ -1016,7 +1016,7 @@ void afl_fsrv_write_to_testcase(afl_forkserver_t *fsrv, u8 *buf, size_t len) {
 
   if (unlikely(fsrv->persistent_record)) {
 
-    *fsrv->persistent_record_len[fsrv->persistent_record_idx] = len;
+    fsrv->persistent_record_len[fsrv->persistent_record_idx] = len;
     fsrv->persistent_record_data[fsrv->persistent_record_idx] = afl_realloc(
         (void **)&fsrv->persistent_record_data[fsrv->persistent_record_idx],
         len);
@@ -1159,10 +1159,10 @@ fsrv_run_result_t afl_fsrv_run_target(afl_forkserver_t *fsrv, u32 timeout,
       idx = fsrv->persistent_record - 1;
     else
       idx = fsrv->persistent_record_idx - 1;
-    val = *fsrv->persistent_record_len[idx];
+    val = fsrv->persistent_record_len[idx];
     memset((void *)fsrv->persistent_record_len, 0,
            fsrv->persistent_record * sizeof(u32));
-    *fsrv->persistent_record_len[idx] = val;
+    fsrv->persistent_record_len[idx] = val;
 
   }
 
@@ -1272,8 +1272,8 @@ fsrv_run_result_t afl_fsrv_run_target(afl_forkserver_t *fsrv, u32 timeout,
 
         u32 entry = (i + fsrv->persistent_record_idx) % fsrv->persistent_record;
         u8 *data = fsrv->persistent_record_data[entry];
-        u32 *len = fsrv->persistent_record_len[entry];
-        if (likely(len && *len && data)) {
+        u32 len = fsrv->persistent_record_len[entry];
+        if (likely(len && data)) {
 
           snprintf(fn, sizeof(fn), "%s/RECORD:%06u,cnt:%06u",
                    fsrv->persistent_record_dir, fsrv->persistent_record_cnt,
@@ -1281,7 +1281,7 @@ fsrv_run_result_t afl_fsrv_run_target(afl_forkserver_t *fsrv, u32 timeout,
           int fd = open(fn, O_WRONLY, 0644);
           if (fd >= 0) {
 
-            ck_write(fd, data, *len, fn);
+            ck_write(fd, data, len, fn);
             close(fd);
 
           }
diff --git a/src/afl-fuzz.c b/src/afl-fuzz.c
index afaa8f5f..4ee71120 100644
--- a/src/afl-fuzz.c
+++ b/src/afl-fuzz.c
@@ -986,6 +986,21 @@ int main(int argc, char **argv_orig, char **envp) {
 
   }
 
+  if (unlikely(afl->afl_env.afl_persistent_record)) {
+
+    afl->fsrv.persistent_record = atoi(afl->afl_env.afl_persistent_record);
+    afl->fsrv.persistent_record_dir = alloc_printf("%s/crashes", afl->out_dir);
+
+    if (afl->fsrv.persistent_record < 2) {
+
+      FATAL(
+          "AFL_PERSISTENT_RECORD value must be be at least 2, recommended is "
+          "100 or 1000.");
+
+    }
+
+  }
+
   if (afl->fsrv.qemu_mode && getenv("AFL_USE_QASAN")) {
 
     u8 *preload = getenv("AFL_PRELOAD");
@@ -1239,29 +1254,6 @@ int main(int argc, char **argv_orig, char **envp) {
 
   }
 
-  if (unlikely(afl->afl_env.afl_persistent_record)) {
-
-    afl->fsrv.persistent_record = atoi(afl->afl_env.afl_persistent_record);
-    afl->fsrv.persistent_record_dir = alloc_printf("%s/crashes", afl->out_dir);
-
-    if (afl->fsrv.persistent_record < 2) {
-
-      FATAL(
-          "AFL_PERSISTENT_RECORD vallue must be be at least 2, recommended is "
-          "100 or 1000.");
-
-    }
-
-    if (!getenv(PERSIST_ENV_VAR)) {
-
-      FATAL(
-          "Target binary is not compiled in persistent mode, "
-          "AFL_PERSISTENT_RECORD makes no sense.");
-
-    }
-
-  }
-
   if (afl->afl_env.afl_crash_exitcode) {
 
     long exitcode = strtol(afl->afl_env.afl_crash_exitcode, NULL, 10);
@@ -1531,6 +1523,18 @@ int main(int argc, char **argv_orig, char **envp) {
 
   check_binary(afl, argv[optind]);
 
+  if (unlikely(afl->fsrv.persistent_record)) {
+
+    if (!getenv(PERSIST_ENV_VAR)) {
+
+      FATAL(
+          "Target binary is not compiled in persistent mode, "
+          "AFL_PERSISTENT_RECORD makes no sense.");
+
+    }
+
+  }
+
   if (afl->shmem_testcase_mode) { setup_testcase_shmem(afl); }
 
   afl->start_time = get_cur_time();