diff --git a/src/libzafl.c b/src/libzafl.c index c0a36ec150ddb43556947c0c52a4f549e5051cf3..95c2b01f4923d25365c64fe5d72c6e6b1dc72a9f 100644 --- a/src/libzafl.c +++ b/src/libzafl.c @@ -279,9 +279,11 @@ static void zafl_setupAflTracemapSharedMemory() { if (getenv("ZAFL_DEBUG")) debug = 1; + if (tracemap_shared_memory_is_setup) return; + zafl_prev_id = 0; zafl_trace_map = NULL; @@ -296,6 +298,12 @@ static void zafl_setupAflTracemapSharedMemory() // setup the area for storing prev_id and context_id 4K away from the end of the trace map void* vars_addr = (void*)(shmat_addr + AFL_VARS_OFFSET); zafl_setupAflVariablesMemory(vars_addr); + if (getenv("ZAFL_DRIVER_SETS_UP_MAP")) + { + tracemap_shared_memory_is_setup=1; + zafl_trace_map=shmat_addr; + return; + } } char *shm_env_var = getenv(SHM_ENV_VAR);