]> Nishi Git Mirror - gwion.git/commitdiff
:art: Add afl-clang-fast special build
authorJérémie Astor <astor.jeremie@wanadoo.fr>
Sun, 15 Dec 2019 13:07:56 +0000 (14:07 +0100)
committerJérémie Astor <astor.jeremie@wanadoo.fr>
Sun, 15 Dec 2019 13:07:56 +0000 (14:07 +0100)
src/main.c

index 0108e477c5193d81cbc6f26d6d96c0d4c30d6aee..7ddc27d36c087e1ee341ba653eec4399ffea1d36 100644 (file)
@@ -15,6 +15,30 @@ static void sig(int unused NUSED) {
 #endif
 }
 
+#ifdef __AFL_HAVE_MANUAL_CONTROL
+
+ANN static void gwion_reset(const Gwion gwion) {
+  release_ctx(gwion->env->scope, gwion);
+  pop_global(gwion);
+  push_global(gwion, "[user]");
+}
+
+#define BUFSIZE 1024
+
+static void afl_run(const Gwion gwion) {
+  char buf[BUFSIZE];
+  __AFL_INIT();
+  while (__AFL_LOOP(1000)) {
+    memset(buf, 0, BUFSIZE);
+    read(0, buf, BUFSIZE);
+    if(compile_string(gwion, "afl", buf))
+      gwion_run(gwion);
+    gwion_reset(gwion);
+  }
+}
+#define gwion_run(a) afl_run(a)
+#endif
+
 int main(int argc, char** argv) {
   Arg arg = { .arg={.argc=argc, .argv=argv}, .loop=-1 };
   signal(SIGINT, sig);