about summary refs log tree commit diff
path: root/src/afl-forkserver.c
diff options
context:
space:
mode:
authorvan Hauser <vh@thc.org>2020-04-11 07:32:42 +0200
committerGitHub <noreply@github.com>2020-04-11 07:32:42 +0200
commit68f269437d0f502a5a091a6ed62cf8d71d0148d6 (patch)
treeae9c05498f11ceba352656a18941498bdd46fcce /src/afl-forkserver.c
parent29ee3a1ffca2aa5a3939beb84d7c6a81621f3355 (diff)
downloadafl++-68f269437d0f502a5a091a6ed62cf8d71d0148d6.tar.gz
Autodictionary (#309)
* lto module clean-up

* step 1/3

* step 1/3 completed

* if tmp is ever made non-static

* parts 2 and 3 - autodictionary is complete

* variable map_size support

* variable map size: changed overlooked functions

* remove debug for autodict

* 64 bit alignment of map size

* fix review comments

* force 64 bit alignment on both sides

* typo

* better map transfer, display snapshot in UI

* update readme
Diffstat (limited to 'src/afl-forkserver.c')
-rw-r--r--src/afl-forkserver.c23
1 files changed, 14 insertions, 9 deletions
diff --git a/src/afl-forkserver.c b/src/afl-forkserver.c
index 7ab8a4b5..3c0ad4a2 100644
--- a/src/afl-forkserver.c
+++ b/src/afl-forkserver.c
@@ -367,23 +367,28 @@ void afl_fsrv_start(afl_forkserver_t *fsrv, char **argv,
       if ((status & FS_OPT_MAPSIZE) == FS_OPT_MAPSIZE) {
 
         fsrv->map_size = FS_OPT_GET_MAPSIZE(status);
-        if (fsrv->map_size % 8)
+        if (fsrv->map_size % 8)  // should not happen
           fsrv->map_size = (((fsrv->map_size + 8) >> 3) << 3);
         if (!be_quiet) ACTF("Target map size: %u", fsrv->map_size);
+        if (fsrv->map_size > MAP_SIZE)
+          FATAL(
+              "Target's coverage map size of %u is larger than the one this "
+              "afl++ is compiled with (%u)\n",
+              fsrv->map_size, MAP_SIZE);
 
       }
 
-      if (fsrv->function_ptr == NULL || fsrv->function_opt == NULL) {
+      if ((status & FS_OPT_AUTODICT) == FS_OPT_AUTODICT) {
 
-        // this is not afl-fuzz - we deny and return
-        status = (0xffffffff ^ (FS_OPT_ENABLED | FS_OPT_AUTODICT));
-        if (write(fsrv->fsrv_ctl_fd, &status, 4) != 4)
-          FATAL("Writing to forkserver failed.");
-        return;
+        if (fsrv->function_ptr == NULL || fsrv->function_opt == NULL) {
 
-      }
+          // this is not afl-fuzz - we deny and return
+          status = (0xffffffff ^ (FS_OPT_ENABLED | FS_OPT_AUTODICT));
+          if (write(fsrv->fsrv_ctl_fd, &status, 4) != 4)
+            FATAL("Writing to forkserver failed.");
+          return;
 
-      if ((status & FS_OPT_AUTODICT) == FS_OPT_AUTODICT) {
+        }
 
         if (!be_quiet) ACTF("Using AUTODICT feature.");
         status = (FS_OPT_ENABLED | FS_OPT_AUTODICT);