about summary refs log tree commit diff
path: root/src/afl-fuzz.c
diff options
context:
space:
mode:
authorvan Hauser <vh@thc.org>2019-12-24 20:56:10 +0100
committervan Hauser <vh@thc.org>2019-12-24 20:56:10 +0100
commit67b6298895e8db0cc91c3bbd0bc29c48f8572c2e (patch)
treed3a398366b212ddfdac35b332c844c14dd3ba57a /src/afl-fuzz.c
parent3122790295489dee77ffc9993561807fe09be3b8 (diff)
downloadafl++-67b6298895e8db0cc91c3bbd0bc29c48f8572c2e.tar.gz
qemu ld_preload support and added socket_fuzzing ld_preload library
Diffstat (limited to 'src/afl-fuzz.c')
-rw-r--r--src/afl-fuzz.c31
1 files changed, 29 insertions, 2 deletions
diff --git a/src/afl-fuzz.c b/src/afl-fuzz.c
index 3a5b0b4e..54fdcc25 100644
--- a/src/afl-fuzz.c
+++ b/src/afl-fuzz.c
@@ -705,10 +705,37 @@ int main(int argc, char** argv) {
   if (dumb_mode == 2 && no_forkserver)
     FATAL("AFL_DUMB_FORKSRV and AFL_NO_FORKSRV are mutually exclusive");
 
+  if (getenv("LD_PRELOAD"))
+    WARNF(
+        "LD_PRELOAD is set, are you sure that is want to you want to do "
+        "instead of using AFL_PRELOAD?");
+
   if (getenv("AFL_PRELOAD")) {
 
-    setenv("LD_PRELOAD", getenv("AFL_PRELOAD"), 1);
-    setenv("DYLD_INSERT_LIBRARIES", getenv("AFL_PRELOAD"), 1);
+    if (qemu_mode) {
+
+      char* qemu_preload = getenv("QEMU_SET_ENV");
+      char  buf[4096];
+
+      if (qemu_preload) {
+
+        snprintf(buf, sizeof(buf), "%s,LD_PRELOAD=%s", qemu_preload,
+                 getenv("AFL_PRELOAD"));
+
+      } else {
+
+        snprintf(buf, sizeof(buf), "LD_PRELOAD=%s", getenv("AFL_PRELOAD"));
+
+      }
+
+      setenv("QEMU_SET_ENV", buf, 1);
+
+    } else {
+
+      setenv("LD_PRELOAD", getenv("AFL_PRELOAD"), 1);
+      setenv("DYLD_INSERT_LIBRARIES", getenv("AFL_PRELOAD"), 1);
+
+    }
 
   }