fix -N for forkserver
diff --git a/src/afl-forkserver.c b/src/afl-forkserver.c
index a8c486b..45be2ab 100644
--- a/src/afl-forkserver.c
+++ b/src/afl-forkserver.c
@@ -108,6 +108,7 @@
fsrv_to->out_file = from->out_file;
fsrv_to->dev_urandom_fd = from->dev_urandom_fd;
fsrv_to->out_fd = from->out_fd; // not sure this is a good idea
+ fsrv_to->no_unlink = from->no_unlink;
// These are forkserver specific.
fsrv_to->out_dir_fd = -1;
@@ -969,7 +970,7 @@
if (!fsrv->use_stdin && fsrv->out_file) {
- if (fsrv->no_unlink) {
+ if (unlikely(fsrv->no_unlink)) {
fd = open(fsrv->out_file, O_WRONLY | O_CREAT | O_TRUNC, 0600);
diff --git a/src/afl-fuzz-run.c b/src/afl-fuzz-run.c
index fb259b5..e969994 100644
--- a/src/afl-fuzz-run.c
+++ b/src/afl-fuzz-run.c
@@ -243,7 +243,7 @@
} else if (afl->fsrv.out_file) {
- if (afl->no_unlink) {
+ if (unlikely(afl->no_unlink)) {
fd = open(afl->fsrv.out_file, O_WRONLY | O_CREAT | O_TRUNC, 0600);
@@ -824,7 +824,7 @@
s32 fd;
- if (afl->no_unlink) {
+ if (unlikely(afl->no_unlink)) {
fd = open(q->fname, O_WRONLY | O_CREAT | O_TRUNC, 0600);
diff --git a/src/afl-fuzz.c b/src/afl-fuzz.c
index 575e6b7..67cde96 100644
--- a/src/afl-fuzz.c
+++ b/src/afl-fuzz.c
@@ -656,7 +656,7 @@
case 'N': /* Unicorn mode */
if (afl->no_unlink) { FATAL("Multiple -N options not supported"); }
- afl->no_unlink = 1;
+ afl->fsrv.no_unlink = afl->no_unlink = 1;
break;