diff options
author | Martin Nyhus <martin@nyhus.dev> | 2024-02-28 22:29:55 +0100 |
---|---|---|
committer | Martin Nyhus <martin@nyhus.dev> | 2024-02-28 22:29:55 +0100 |
commit | 335b2d4542d951b6742ca02646ab1c254f64f8f2 (patch) | |
tree | 8bc7096897ee18db6429bdecc31ad5200d9b838f /src | |
parent | 603136efa032d62eec14720a7435ce0a6d143bb6 (diff) | |
download | afl++-335b2d4542d951b6742ca02646ab1c254f64f8f2.tar.gz |
Load autodictionary when using new forkserver
Fixes a bug where the new fork server would decrement dict_size until zero then try to use it as the upper bound for the number of bytes to pass to add_extra_func, causing it to never store any of the tokens.
Diffstat (limited to 'src')
-rw-r--r-- | src/afl-forkserver.c | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/src/afl-forkserver.c b/src/afl-forkserver.c index 1381236c..d9207d45 100644 --- a/src/afl-forkserver.c +++ b/src/afl-forkserver.c @@ -1152,12 +1152,11 @@ void afl_fsrv_start(afl_forkserver_t *fsrv, char **argv, } - while (dict_size != 0) { + while (offset < dict_size) { - rlen = read(fsrv->fsrv_st_fd, dict + offset, dict_size); + rlen = read(fsrv->fsrv_st_fd, dict + offset, dict_size - offset); if (rlen > 0) { - dict_size -= rlen; offset += rlen; } else { @@ -1165,7 +1164,7 @@ void afl_fsrv_start(afl_forkserver_t *fsrv, char **argv, FATAL( "Reading autodictionary fail at position %u with %u bytes " "left.", - offset, dict_size); + offset, dict_size - offset); } |