diff options
author | Dominik Maier <domenukk@gmail.com> | 2020-03-09 11:24:10 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-03-09 11:24:10 +0100 |
commit | dba3595c0ae26795a78753ea33ff0c3edf9d6328 (patch) | |
tree | 03bcaf132705d6de222ef8d6eff9b5bc2f03ce54 /include/forkserver.h | |
parent | c159b872ef17d4c09238f99ac11021e12975cb3a (diff) | |
download | afl++-dba3595c0ae26795a78753ea33ff0c3edf9d6328.tar.gz |
AFL without globals (#220)
* moved globals to afl, shm and fsrv * moved argv to afl state, less bugs * fixed unicorn docu * lists everywhere * merged custom mutators * fixed leaks in afl-fuzz
Diffstat (limited to 'include/forkserver.h')
-rw-r--r-- | include/forkserver.h | 41 |
1 files changed, 40 insertions, 1 deletions
diff --git a/include/forkserver.h b/include/forkserver.h index 0fdcba48..3587427b 100644 --- a/include/forkserver.h +++ b/include/forkserver.h @@ -27,8 +27,47 @@ #ifndef __AFL_FORKSERVER_H #define __AFL_FORKSERVER_H +#include <stdio.h> + +typedef struct afl_forkserver { + + /* a program that includes afl-forkserver needs to define these */ + + u8 uses_asan; /* Target uses ASAN? */ + u8* trace_bits; /* SHM with instrumentation bitmap */ + u8 use_stdin; /* use stdin for sending data */ + +s32 fsrv_pid, /* PID of the fork server */ + child_pid, /* PID of the fuzzed program */ + out_dir_fd; /* FD of the lock file */ + +s32 out_fd, /* Persistent fd for afl->fsrv.out_file */ +#ifndef HAVE_ARC4RANDOM + dev_urandom_fd, /* Persistent fd for /dev/urandom */ +#endif + dev_null_fd, /* Persistent fd for /dev/null */ + fsrv_ctl_fd, /* Fork server control pipe (write) */ + fsrv_st_fd; /* Fork server status pipe (read) */ + + u32 exec_tmout; /* Configurable exec timeout (ms) */ + u64 mem_limit; /* Memory cap for child (MB) */ + + u8 *out_file, /* File to fuzz, if any */ + *target_path; /* Path of the target */ + + FILE* plot_file; /* Gnuplot output file */ + + u8 child_timed_out; /* Traced process timed out? */ + +} afl_forkserver_t; + + + void handle_timeout(int sig); -void init_forkserver(char **argv); +void afl_fsrv_init(afl_forkserver_t *fsrv); +void afl_fsrv_start(afl_forkserver_t *fsrv, char **argv); +void afl_fsrv_deinit(afl_forkserver_t *fsrv); +void afl_fsrv_killall(); #ifdef __APPLE__ #define MSG_FORK_ON_APPLE \ |