From d3d0682310b840b027083133837bcd9be0638281 Mon Sep 17 00:00:00 2001 From: van Hauser Date: Mon, 19 Aug 2019 12:54:55 +0200 Subject: seperated the forkserver from afl-fuzz and afl-tmin --- sharedmem.c | 137 ------------------------------------------------------------ 1 file changed, 137 deletions(-) delete mode 100644 sharedmem.c (limited to 'sharedmem.c') diff --git a/sharedmem.c b/sharedmem.c deleted file mode 100644 index 3fd38444..00000000 --- a/sharedmem.c +++ /dev/null @@ -1,137 +0,0 @@ -/* - - */ - -#define AFL_MAIN - -#include "config.h" -#include "types.h" -#include "debug.h" -#include "alloc-inl.h" -#include "hash.h" -#include "sharedmem.h" - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include - -#ifndef USEMMAP - #include - #include -#endif - -extern unsigned char*trace_bits; - -#ifdef USEMMAP -/* ================ Proteas ================ */ -int g_shm_fd = -1; -unsigned char *g_shm_base = NULL; -char g_shm_file_path[L_tmpnam]; -/* ========================================= */ -#else -static s32 shm_id; /* ID of the SHM region */ -#endif - -/* Get rid of shared memory (atexit handler). */ - -void remove_shm(void) { -#ifdef USEMMAP - if (g_shm_base != NULL) { - munmap(g_shm_base, MAP_SIZE); - g_shm_base = NULL; - } - - if (g_shm_fd != -1) { - close(g_shm_fd); - g_shm_fd = -1; - } -#else - shmctl(shm_id, IPC_RMID, NULL); -#endif -} - - -/* Configure shared memory. */ - -void setup_shm(unsigned char dumb_mode) { -#ifdef USEMMAP - /* generate random file name for multi instance */ - - /* thanks to f*cking glibc we can not use tmpnam securely, it generates a security warning that cannot be suppressed */ - /* so we do this worse workaround */ - snprintf(g_shm_file_path, L_tmpnam, "/afl_%d_%ld", getpid(), random()); - - /* create the shared memory segment as if it was a file */ - g_shm_fd = shm_open(g_shm_file_path, O_CREAT | O_RDWR | O_EXCL, 0600); - if (g_shm_fd == -1) { - PFATAL("shm_open() failed"); - } - - /* configure the size of the shared memory segment */ - if (ftruncate(g_shm_fd, MAP_SIZE)) { - PFATAL("setup_shm(): ftruncate() failed"); - } - - /* map the shared memory segment to the address space of the process */ - g_shm_base = mmap(0, MAP_SIZE, PROT_READ | PROT_WRITE, MAP_SHARED, g_shm_fd, 0); - if (g_shm_base == MAP_FAILED) { - close(g_shm_fd); - g_shm_fd = -1; - PFATAL("mmap() failed"); - } - - atexit(remove_shm); - - /* If somebody is asking us to fuzz instrumented binaries in dumb mode, - we don't want them to detect instrumentation, since we won't be sending - fork server commands. This should be replaced with better auto-detection - later on, perhaps? */ - - if (!dumb_mode) setenv(SHM_ENV_VAR, g_shm_file_path, 1); - - trace_bits = g_shm_base; - - if (!trace_bits) PFATAL("mmap() failed"); - -#else - u8* shm_str; - - shm_id = shmget(IPC_PRIVATE, MAP_SIZE, IPC_CREAT | IPC_EXCL | 0600); - - if (shm_id < 0) PFATAL("shmget() failed"); - - atexit(remove_shm); - - shm_str = alloc_printf("%d", shm_id); - - setenv(SHM_ENV_VAR, shm_str, 1); - - /* If somebody is asking us to fuzz instrumented binaries in dumb mode, - we don't want them to detect instrumentation, since we won't be sending - fork server commands. This should be replaced with better auto-detection - later on, perhaps? */ - - if (!dumb_mode) setenv(SHM_ENV_VAR, shm_str, 1); - - ck_free(shm_str); - - trace_bits = shmat(shm_id, NULL, 0); - - if (!trace_bits) PFATAL("shmat() failed"); - -#endif -} - -- cgit 1.4.1