about summary refs log tree commit diff
path: root/src/afl-tmin.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/afl-tmin.c')
-rw-r--r--src/afl-tmin.c13
1 files changed, 8 insertions, 5 deletions
diff --git a/src/afl-tmin.c b/src/afl-tmin.c
index 5a29bec1..5d5ea477 100644
--- a/src/afl-tmin.c
+++ b/src/afl-tmin.c
@@ -1096,13 +1096,16 @@ static void read_bitmap(u8* fname) {
 
 /* Main entry point */
 
-int main(int argc, char** argv, char** envp) {
+int main(int argc, char** argv_orig, char** envp) {
 
   s32    opt;
   u8     mem_limit_given = 0, timeout_given = 0, unicorn_mode = 0, use_wine = 0;
-  char** use_argv;
+  char **use_argv;
 
-  afl_forkserver_t* fsrv = calloc(1, sizeof(afl_forkserver_t));
+  char **argv = argv_cpy_dup(argc, argv_orig);
+
+  afl_forkserver_t fsrv_var = {0};
+  afl_forkserver_t* fsrv = &fsrv_var;
   afl_fsrv_init(fsrv);
 
   doc_path = access(DOC_PATH, F_OK) ? "docs" : DOC_PATH;
@@ -1354,11 +1357,11 @@ int main(int argc, char** argv, char** envp) {
   afl_shm_deinit(&shm);
   afl_fsrv_deinit(fsrv);
   if (fsrv->target_path) ck_free(fsrv->target_path);
-  ck_free(fsrv);
-  fsrv = NULL;
   if (mask_bitmap) ck_free(mask_bitmap);
   if (in_data) ck_free(in_data);
 
+  argv_cpy_free(argv);
+
   exit(0);
 
 }