make dominik more happy - no auto map size for qemu+unicorn

This commit is contained in:
van Hauser
2021-02-01 13:04:39 +01:00
parent d808a8401e
commit 88155d2c3b
4 changed files with 67 additions and 48 deletions

View File

@ -1169,8 +1169,8 @@ void __sanitizer_cov_trace_pc_guard_init(uint32_t *start, uint32_t *stop) {
if (getenv("AFL_DEBUG")) { if (getenv("AFL_DEBUG")) {
fprintf(stderr, "Running __sanitizer_cov_trace_pc_guard_init: %p-%p\n", fprintf(stderr, "Running __sanitizer_cov_trace_pc_guard_init: %p-%p (%lu edges)\n",
start, stop); start, stop, stop - start);
} }

View File

@ -1536,7 +1536,8 @@ int main(int argc, char **argv_orig, char **envp) {
afl->fsrv.trace_bits = afl->fsrv.trace_bits =
afl_shm_init(&afl->shm, afl->fsrv.map_size, afl->non_instrumented_mode); afl_shm_init(&afl->shm, afl->fsrv.map_size, afl->non_instrumented_mode);
if (!afl->non_instrumented_mode) { if (!afl->non_instrumented_mode && !afl->fsrv.qemu_mode &&
!afl->unicorn_mode) {
afl->fsrv.map_size = 4194304; // dummy temporary value afl->fsrv.map_size = 4194304; // dummy temporary value

View File

@ -1068,38 +1068,43 @@ int main(int argc, char **argv_orig, char **envp) {
fsrv->shmem_fuzz_len = (u32 *)map; fsrv->shmem_fuzz_len = (u32 *)map;
fsrv->shmem_fuzz = map + sizeof(u32); fsrv->shmem_fuzz = map + sizeof(u32);
u32 save_be_quiet = be_quiet; if (!fsrv->qemu_mode && !unicorn_mode) {
be_quiet = !debug;
fsrv->map_size = 4194304; // dummy temporary value
u32 new_map_size = afl_fsrv_get_mapsize(
fsrv, use_argv, &stop_soon,
(get_afl_env("AFL_DEBUG_CHILD") || get_afl_env("AFL_DEBUG_CHILD_OUTPUT"))
? 1
: 0);
be_quiet = save_be_quiet;
if (new_map_size) { u32 save_be_quiet = be_quiet;
be_quiet = !debug;
fsrv->map_size = 4194304; // dummy temporary value
u32 new_map_size =
afl_fsrv_get_mapsize(fsrv, use_argv, &stop_soon,
(get_afl_env("AFL_DEBUG_CHILD") ||
get_afl_env("AFL_DEBUG_CHILD_OUTPUT"))
? 1
: 0);
be_quiet = save_be_quiet;
// only reinitialize when it makes sense if (new_map_size) {
if (map_size < new_map_size ||
(new_map_size > map_size && new_map_size - map_size > MAP_SIZE)) {
if (!be_quiet) // only reinitialize when it makes sense
ACTF("Aquired new map size for target: %u bytes\n", new_map_size); if (map_size < new_map_size ||
(new_map_size > map_size && new_map_size - map_size > MAP_SIZE)) {
afl_shm_deinit(&shm); if (!be_quiet)
afl_fsrv_kill(fsrv); ACTF("Aquired new map size for target: %u bytes\n", new_map_size);
fsrv->map_size = new_map_size;
fsrv->trace_bits = afl_shm_init(&shm, new_map_size, 0); afl_shm_deinit(&shm);
afl_fsrv_kill(fsrv);
fsrv->map_size = new_map_size;
fsrv->trace_bits = afl_shm_init(&shm, new_map_size, 0);
}
map_size = new_map_size;
} }
map_size = new_map_size; fsrv->map_size = map_size;
} }
fsrv->map_size = map_size;
if (in_dir) { if (in_dir) {
DIR * dir_in, *dir_out = NULL; DIR * dir_in, *dir_out = NULL;

View File

@ -1199,39 +1199,52 @@ int main(int argc, char **argv_orig, char **envp) {
read_initial_file(); read_initial_file();
fsrv->map_size = 4194304; // dummy temporary value if (!fsrv->qemu_mode && !unicorn_mode) {
u32 new_map_size = afl_fsrv_get_mapsize(
fsrv, use_argv, &stop_soon,
(get_afl_env("AFL_DEBUG_CHILD") || get_afl_env("AFL_DEBUG_CHILD_OUTPUT"))
? 1
: 0);
if (new_map_size) { fsrv->map_size = 4194304; // dummy temporary value
u32 new_map_size =
afl_fsrv_get_mapsize(fsrv, use_argv, &stop_soon,
(get_afl_env("AFL_DEBUG_CHILD") ||
get_afl_env("AFL_DEBUG_CHILD_OUTPUT"))
? 1
: 0);
if (map_size < new_map_size || if (new_map_size) {
(new_map_size > map_size && new_map_size - map_size > MAP_SIZE)) {
if (!be_quiet) if (map_size < new_map_size ||
ACTF("Aquired new map size for target: %u bytes\n", new_map_size); (new_map_size > map_size && new_map_size - map_size > MAP_SIZE)) {
afl_shm_deinit(&shm); if (!be_quiet)
afl_fsrv_kill(fsrv); ACTF("Aquired new map size for target: %u bytes\n", new_map_size);
fsrv->map_size = new_map_size;
fsrv->trace_bits = afl_shm_init(&shm, new_map_size, 0); afl_shm_deinit(&shm);
afl_fsrv_start(fsrv, use_argv, &stop_soon, afl_fsrv_kill(fsrv);
(get_afl_env("AFL_DEBUG_CHILD") || fsrv->map_size = new_map_size;
get_afl_env("AFL_DEBUG_CHILD_OUTPUT")) fsrv->trace_bits = afl_shm_init(&shm, new_map_size, 0);
? 1 afl_fsrv_start(fsrv, use_argv, &stop_soon,
: 0); (get_afl_env("AFL_DEBUG_CHILD") ||
get_afl_env("AFL_DEBUG_CHILD_OUTPUT"))
? 1
: 0);
}
map_size = new_map_size;
} }
map_size = new_map_size; fsrv->map_size = map_size;
} else {
afl_fsrv_start(fsrv, use_argv, &stop_soon,
(get_afl_env("AFL_DEBUG_CHILD") ||
get_afl_env("AFL_DEBUG_CHILD_OUTPUT"))
? 1
: 0);
} }
fsrv->map_size = map_size;
if (fsrv->support_shmem_fuzz && !fsrv->use_shmem_fuzz) if (fsrv->support_shmem_fuzz && !fsrv->use_shmem_fuzz)
shm_fuzz = deinit_shmem(fsrv, shm_fuzz); shm_fuzz = deinit_shmem(fsrv, shm_fuzz);