about summary refs log tree commit diff
path: root/sharedmem.c
diff options
context:
space:
mode:
Diffstat (limited to 'sharedmem.c')
-rw-r--r--sharedmem.c137
1 files changed, 0 insertions, 137 deletions
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 <stdio.h>
-#include <unistd.h>
-#include <stdlib.h>
-#include <string.h>
-#include <time.h>
-#include <errno.h>
-#include <signal.h>
-#include <dirent.h>
-#include <fcntl.h>
-
-#include <sys/wait.h>
-#include <sys/time.h>
-#include <sys/stat.h>
-#include <sys/types.h>
-#include <sys/resource.h>
-#include <sys/mman.h>
-
-#ifndef USEMMAP
- #include <sys/ipc.h>
- #include <sys/shm.h>
-#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
-}
-