aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDominik Maier <domenukk@gmail.com>2020-04-26 02:32:09 +0200
committerDominik Maier <domenukk@gmail.com>2020-04-26 02:32:09 +0200
commit66eee34709be9b91808601c7e3e638ffacb858db (patch)
tree9c9b0a2b1554d39373fe26d3b5edbc2433c24c43 /src
parent85627516a40d75746e00427710dd16c1161f2532 (diff)
downloadafl++-66eee34709be9b91808601c7e3e638ffacb858db.tar.gz
refactored global lists
Diffstat (limited to 'src')
-rw-r--r--src/afl-common.c2
-rw-r--r--src/afl-fuzz-init.c13
-rw-r--r--src/afl-fuzz-state.c33
3 files changed, 36 insertions, 12 deletions
diff --git a/src/afl-common.c b/src/afl-common.c
index 8ae03113..dda62219 100644
--- a/src/afl-common.c
+++ b/src/afl-common.c
@@ -918,7 +918,7 @@ u32 read_timed(s32 fd, void *buf, size_t len, u32 timeout_ms,
}
-u32 get_map_size() {
+u32 get_map_size(void) {
uint32_t map_size = MAP_SIZE;
char * ptr;
diff --git a/src/afl-fuzz-init.c b/src/afl-fuzz-init.c
index 4dd31ac9..32481887 100644
--- a/src/afl-fuzz-init.c
+++ b/src/afl-fuzz-init.c
@@ -1903,7 +1903,7 @@ void fix_up_sync(afl_state_t *afl) {
static void handle_resize(int sig) {
- LIST_FOREACH(&afl_states, afl_state_t, { el->clear_screen = 1; });
+ afl_states_clear_screen();
}
@@ -1954,14 +1954,7 @@ void check_asan_opts(void) {
static void handle_stop_sig(int sig) {
- LIST_FOREACH(&afl_states, afl_state_t, {
-
- el->stop_soon = 1;
-
- if (el->fsrv.child_pid > 0) kill(el->fsrv.child_pid, SIGKILL);
- if (el->fsrv.fsrv_pid > 0) kill(el->fsrv.fsrv_pid, SIGKILL);
-
- });
+ afl_states_stop();
}
@@ -1969,7 +1962,7 @@ static void handle_stop_sig(int sig) {
static void handle_skipreq(int sig) {
- LIST_FOREACH(&afl_states, afl_state_t, { el->skip_requested = 1; });
+ afl_states_request_skip();
}
diff --git a/src/afl-fuzz-state.c b/src/afl-fuzz-state.c
index af6fc11f..4f5389e3 100644
--- a/src/afl-fuzz-state.c
+++ b/src/afl-fuzz-state.c
@@ -71,7 +71,7 @@ static void init_mopt_globals(afl_state_t *afl) {
/* A global pointer to all instances is needed (for now) for signals to arrive
*/
-list_t afl_states = {.element_prealloc_count = 0};
+static list_t afl_states = {.element_prealloc_count = 0};
/* Initializes an afl_state_t. */
@@ -398,3 +398,34 @@ void afl_state_deinit(afl_state_t *afl) {
}
+void afl_states_stop(void) {
+
+ /* We may be inside a signal handler.
+ Set flags first, send kill signals to child proceses later. */
+ LIST_FOREACH(&afl_states, afl_state_t, {
+
+ el->stop_soon = 1;
+
+ });
+
+ LIST_FOREACH(&afl_states, afl_state_t, {
+
+ if (el->fsrv.child_pid > 0) kill(el->fsrv.child_pid, SIGKILL);
+ if (el->fsrv.fsrv_pid > 0) kill(el->fsrv.fsrv_pid, SIGKILL);
+
+ });
+
+}
+
+void afl_states_clear_screen(void) {
+
+ LIST_FOREACH(&afl_states, afl_state_t, { el->clear_screen = 1; });
+
+}
+
+void afl_states_request_skip(void) {
+
+ LIST_FOREACH(&afl_states, afl_state_t, { el->skip_requested = 1; });
+
+}
+