mirror of
https://github.com/AFLplusplus/AFLplusplus.git
synced 2025-06-17 12:18:08 +00:00
afl-showmap: Start a only a single fork server (#1718)
A forkserver is started by afl_fsrv_get_mapsize() when dynamically finding the map size. When an input directory option is specified a second fork server was also started. This commit re-arranges the inits for several forkserver struct members so that we can re-use the server started by the get_mapsize() call when not in coresight/qemu/unicorn modes and just start the server otherwise.
This commit is contained in:
@ -1421,6 +1421,14 @@ int main(int argc, char **argv_orig, char **envp) {
|
|||||||
// If @@ are in the target args, replace them and also set use_stdin=false.
|
// If @@ are in the target args, replace them and also set use_stdin=false.
|
||||||
detect_file_args(argv + optind, stdin_file, &fsrv->use_stdin);
|
detect_file_args(argv + optind, stdin_file, &fsrv->use_stdin);
|
||||||
|
|
||||||
|
fsrv->dev_null_fd = open("/dev/null", O_RDWR);
|
||||||
|
if (fsrv->dev_null_fd < 0) { PFATAL("Unable to open /dev/null"); }
|
||||||
|
|
||||||
|
fsrv->out_file = stdin_file;
|
||||||
|
fsrv->out_fd =
|
||||||
|
open(stdin_file, O_RDWR | O_CREAT | O_EXCL, DEFAULT_PERMISSION);
|
||||||
|
if (fsrv->out_fd < 0) { PFATAL("Unable to create '%s'", stdin_file); }
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
// If @@ are in the target args, replace them and also set use_stdin=false.
|
// If @@ are in the target args, replace them and also set use_stdin=false.
|
||||||
@ -1588,6 +1596,14 @@ int main(int argc, char **argv_orig, char **envp) {
|
|||||||
|
|
||||||
fsrv->map_size = 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);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (in_dir || in_filelist) {
|
if (in_dir || in_filelist) {
|
||||||
@ -1617,9 +1633,6 @@ int main(int argc, char **argv_orig, char **envp) {
|
|||||||
|
|
||||||
if (getenv("AFL_DEBUG_GDB")) wait_for_gdb = true;
|
if (getenv("AFL_DEBUG_GDB")) wait_for_gdb = true;
|
||||||
|
|
||||||
fsrv->dev_null_fd = open("/dev/null", O_RDWR);
|
|
||||||
if (fsrv->dev_null_fd < 0) { PFATAL("Unable to open /dev/null"); }
|
|
||||||
|
|
||||||
if (in_filelist) {
|
if (in_filelist) {
|
||||||
|
|
||||||
if (!be_quiet) ACTF("Reading from file list '%s'...", in_filelist);
|
if (!be_quiet) ACTF("Reading from file list '%s'...", in_filelist);
|
||||||
@ -1666,10 +1679,6 @@ int main(int argc, char **argv_orig, char **envp) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
atexit(at_exit_handler);
|
atexit(at_exit_handler);
|
||||||
fsrv->out_file = stdin_file;
|
|
||||||
fsrv->out_fd =
|
|
||||||
open(stdin_file, O_RDWR | O_CREAT | O_EXCL, DEFAULT_PERMISSION);
|
|
||||||
if (fsrv->out_fd < 0) { PFATAL("Unable to create '%s'", out_file); }
|
|
||||||
|
|
||||||
if (get_afl_env("AFL_DEBUG")) {
|
if (get_afl_env("AFL_DEBUG")) {
|
||||||
|
|
||||||
@ -1685,12 +1694,6 @@ int main(int argc, char **argv_orig, char **envp) {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
afl_fsrv_start(fsrv, use_argv, &stop_soon,
|
|
||||||
(get_afl_env("AFL_DEBUG_CHILD") ||
|
|
||||||
get_afl_env("AFL_DEBUG_CHILD_OUTPUT"))
|
|
||||||
? 1
|
|
||||||
: 0);
|
|
||||||
|
|
||||||
map_size = fsrv->map_size;
|
map_size = fsrv->map_size;
|
||||||
|
|
||||||
if (fsrv->support_shmem_fuzz && !fsrv->use_shmem_fuzz)
|
if (fsrv->support_shmem_fuzz && !fsrv->use_shmem_fuzz)
|
||||||
|
Reference in New Issue
Block a user