diff options
author | Huanyao Rong <r3tr0spect2019@qq.com> | 2024-06-21 21:03:37 -0700 |
---|---|---|
committer | Nguyễn Gia Phong <cnx@loang.net> | 2024-12-03 11:17:44 +0900 |
commit | d04bdf2e841fa6706c16bbba1cb6f6c73d647767 (patch) | |
tree | 23393adc733e6e9e61d7eb226c90258870bb0624 /src/afl-forkserver.c | |
parent | cee3c86d7d5f0a05ad6cbb1434dc13162a16e336 (diff) | |
download | afl++-d04bdf2e841fa6706c16bbba1cb6f6c73d647767.tar.gz |
Implement AFLRun
References: https://github.com/Mem2019/AFLRun/commit/f5bb87f78ef1 References: https://github.com/Mem2019/AFLRun/commit/3af5f11b5644
Diffstat (limited to 'src/afl-forkserver.c')
-rw-r--r-- | src/afl-forkserver.c | 26 |
1 files changed, 22 insertions, 4 deletions
diff --git a/src/afl-forkserver.c b/src/afl-forkserver.c index 9b8660ce..67105dda 100644 --- a/src/afl-forkserver.c +++ b/src/afl-forkserver.c @@ -1395,6 +1395,26 @@ afl_fsrv_write_to_testcase(afl_forkserver_t *fsrv, u8 *buf, size_t len) { } +/* Reset shared memory before each run */ +void afl_fsrv_clear(afl_forkserver_t *fsrv) { + memset(fsrv->trace_bits, 0, fsrv->map_size); + + if (fsrv->num_reachables != 0) { + + memset(fsrv->trace_reachables, 0, MAP_RBB_SIZE(fsrv->num_reachables)); + memset(fsrv->trace_freachables, 0, MAP_RF_SIZE(fsrv->num_freachables)); + memset(fsrv->trace_ctx, 0, MAP_TR_SIZE(fsrv->num_reachables)); + fsrv->trace_virgin->num = 0; + fsrv->trace_targets->num = 0; + + // If we want to count frequency, set last bit of block bitmap + if (fsrv->testing) + fsrv->trace_reachables[fsrv->num_reachables / 8] |= + 1 << (fsrv->num_reachables % 8); + + } +} + /* Execute target application, monitoring for timeouts. Return status information. The called program will update afl->fsrv->trace_bits. */ @@ -1470,14 +1490,12 @@ afl_fsrv_run_target(afl_forkserver_t *fsrv, u32 timeout, #ifdef __linux__ if (!fsrv->nyx_mode) { - - memset(fsrv->trace_bits, 0, fsrv->map_size); + afl_fsrv_clear(fsrv); MEM_BARRIER(); - } #else - memset(fsrv->trace_bits, 0, fsrv->map_size); + afl_fsrv_clear(fsrv); MEM_BARRIER(); #endif |