From 2570bd73c0c5b5d5ed035a276e7c6ffc05b0e067 Mon Sep 17 00:00:00 2001 From: Anh <zenpoems@gmail.com> Date: Sun, 5 Aug 2018 20:54:50 +0000 Subject: [PATCH] Suppress debug output unless ZAFL_DEBUG env. var is set --- src/libzafl.cpp | 31 ++++++++++++++++++++----------- 1 file changed, 20 insertions(+), 11 deletions(-) diff --git a/src/libzafl.cpp b/src/libzafl.cpp index 7f0ae2f..4dcb274 100644 --- a/src/libzafl.cpp +++ b/src/libzafl.cpp @@ -29,16 +29,17 @@ #include "libzafl.hpp" -// these are externally visible so that Zipr transformations can access directly +// externally visible so that Zipr transformations can access directly u8* zafl_trace_map; unsigned short zafl_prev_id; -static s32 shm_id; /* ID of the SHM region */ +static s32 shm_id; static int __afl_temp_data; static pid_t __afl_fork_pid; +static auto debug = false; -#define PRINT_ERROR(string) (void)(write(2, string, strlen(string))+1) -#define PRINT_DEBUG(string) (void)(write(1, string, strlen(string))+1) +#define PRINT_ERROR(string) if (debug) {(void)(write(2, string, strlen(string)));} +#define PRINT_DEBUG(string) if (debug) {(void)(write(1, string, strlen(string)));} static void zafl_setupSharedMemory(); static bool shared_memory_is_setup = false; @@ -52,7 +53,7 @@ static void zafl_setupSharedMemory() char *shm_env_var = getenv(SHM_ENV_VAR); if(!shm_env_var) { - PRINT_ERROR("Error getting shm\n"); + PRINT_ERROR("Error getting shm environment variable\n"); return; } shm_id = atoi(shm_env_var); @@ -67,32 +68,40 @@ static void zafl_setupSharedMemory() void zafl_initAflForkServer() { + static auto fork_server_initialized = false; + + if (fork_server_initialized) return; + + if (getenv("ZAFL_DEBUG")) debug = true; + if (!shared_memory_is_setup) zafl_setupSharedMemory(); if (!zafl_trace_map) { zafl_trace_map = (u8*)malloc(MAP_SIZE); - printf("no shmem detected: fake it: zafl_trace_map = %p, malloc_size(%d)\n", zafl_trace_map, MAP_SIZE); + if (debug) + printf("no shmem detected: fake it: zafl_trace_map = %p, malloc_size(%d)\n", zafl_trace_map, MAP_SIZE); } int n = write(FORKSRV_FD+1, &__afl_temp_data,4); if( n!=4 ) { - PRINT_ERROR("Error writting fork server\n"); - perror("zafl_initAflForkServer()"); - printf("zafl_trace_map = %p, FORKSVR_FD(%d)\n", zafl_trace_map, FORKSRV_FD); + if (debug) + perror("zafl_initAflForkServer()"); return; } + fork_server_initialized = true; + while(1) { n = read(FORKSRV_FD,&__afl_temp_data,4); if(n != 4) { - PRINT_ERROR("Error reading fork server\n"); + perror("Error reading fork server\n"); return; } __afl_fork_pid = fork(); if(__afl_fork_pid < 0) { - PRINT_ERROR("Error on fork()\n"); + perror("Error on fork()\n"); return; } if(__afl_fork_pid == 0) { -- GitLab