aboutsummaryrefslogtreecommitdiff
path: root/include/forkserver.h
diff options
context:
space:
mode:
authorvan Hauser <vh@thc.org>2020-04-17 19:25:34 +0200
committerGitHub <noreply@github.com>2020-04-17 19:25:34 +0200
commitddea300822e5628482366ecb38adac31717d69bc (patch)
tree113c1ba9df4b26d206a8bc0f3182222572e5f553 /include/forkserver.h
parent504529c3aa5c80937f9f722f90d0ec55e09c6dd2 (diff)
parent9900c92ebc73a7706f4604c274ccf6430549e77e (diff)
downloadafl++-ddea300822e5628482366ecb38adac31717d69bc.tar.gz
Merge pull request #321 from AFLplusplus/dev2.64c
Push for next release
Diffstat (limited to 'include/forkserver.h')
-rw-r--r--include/forkserver.h48
1 files changed, 42 insertions, 6 deletions
diff --git a/include/forkserver.h b/include/forkserver.h
index 5d1bd2cf..18a287ad 100644
--- a/include/forkserver.h
+++ b/include/forkserver.h
@@ -29,7 +29,9 @@
#define __AFL_FORKSERVER_H
#include <stdio.h>
+#include <stdbool.h>
+#include "types.h"
typedef struct afl_forkserver {
/* a program that includes afl-forkserver needs to define these */
@@ -50,26 +52,60 @@ typedef struct afl_forkserver {
fsrv_ctl_fd, /* Fork server control pipe (write) */
fsrv_st_fd; /* Fork server status pipe (read) */
+ u8 no_unlink; /* do not unlink cur_input */
+
u32 exec_tmout; /* Configurable exec timeout (ms) */
+ u32 map_size; /* map size used by the target */
+ u32 snapshot; /* is snapshot feature used */
u64 mem_limit; /* Memory cap for child (MB) */
+ u64 total_execs; /* How often run_target was called */
+
u8 *out_file, /* File to fuzz, if any */
- *target_path; /* Path of the target */
+ *target_path; /* Path of the target */
FILE *plot_file; /* Gnuplot output file */
- u8 child_timed_out; /* Traced process timed out? */
+ /* Note: lat_run_timed_out is u32 to send it to the child as 4 byte array */
+ u32 last_run_timed_out; /* Traced process timed out? */
+
+ u8 last_kill_signal; /* Signal that killed the child */
u8 use_fauxsrv; /* Fauxsrv for non-forking targets? */
- u32 prev_timed_out; /* if prev forkserver run timed out */
+ u8 qemu_mode; /* if running in qemu mode or not */
+
+ char *cmplog_binary; /* the name of the cmplog binary */
+
+ /* Function to kick off the forkserver child */
+ void (*init_child_func)(struct afl_forkserver *fsrv, char **argv);
+
+ u8 *function_opt; /* for autodictionary: afl ptr */
+
+ void (*function_ptr)(void *afl_tmp, u8 *mem, u32 len);
} afl_forkserver_t;
+typedef enum fsrv_run_result {
+
+ /* 00 */ FSRV_RUN_OK = 0,
+ /* 01 */ FSRV_RUN_TMOUT,
+ /* 02 */ FSRV_RUN_CRASH,
+ /* 03 */ FSRV_RUN_ERROR,
+ /* 04 */ FSRV_RUN_NOINST,
+ /* 05 */ FSRV_RUN_NOBITS,
+
+} fsrv_run_result_t;
+
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();
+void afl_fsrv_init_dup(afl_forkserver_t *fsrv_to, afl_forkserver_t *from);
+void afl_fsrv_start(afl_forkserver_t *fsrv, char **argv,
+ volatile u8 *stop_soon_p, u8 debug_child_output);
+void afl_fsrv_write_to_testcase(afl_forkserver_t *fsrv, u8 *buf, size_t len);
+fsrv_run_result_t afl_fsrv_run_target(afl_forkserver_t *fsrv, u32 timeout,
+ volatile u8 *stop_soon_p);
+void afl_fsrv_killall(void);
+void afl_fsrv_deinit(afl_forkserver_t *fsrv);
#ifdef __APPLE__
#define MSG_FORK_ON_APPLE \