about summary refs log tree commit diff
diff options
context:
space:
mode:
authorJiangen Jiao <joeyjiaojg@qq.com>2021-04-07 11:28:19 +0800
committerJiangen Jiao <joeyjiaojg@qq.com>2021-04-07 11:28:19 +0800
commit28878c69e0c275e42b40bc2ab17bdca7dd1a989e (patch)
treee78fb8ffab8840a31dfe8b1a9832e4fcbb4a9f83
parent9d1be3162a613949003d84a506eddd7acd79680a (diff)
downloadafl++-28878c69e0c275e42b40bc2ab17bdca7dd1a989e.tar.gz
android: disable sigaction inside debuggerd
check https://github.com/google/AFL/blob/master/docs/INSTALL#L173
-rw-r--r--instrumentation/afl-compiler-rt.o.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/instrumentation/afl-compiler-rt.o.c b/instrumentation/afl-compiler-rt.o.c
index 1f003c1e..552bbea8 100644
--- a/instrumentation/afl-compiler-rt.o.c
+++ b/instrumentation/afl-compiler-rt.o.c
@@ -1144,6 +1144,18 @@ void __afl_manual_init(void) {
 
 __attribute__((constructor())) void __afl_auto_init(void) {
 
+#ifdef __ANDROID__
+  // Disable handlers in linker/debuggerd, check include/debuggerd/handler.h
+  signal(SIGABRT, SIG_DFL);
+  signal(SIGBUS, SIG_DFL);
+  signal(SIGFPE, SIG_DFL);
+  signal(SIGILL, SIG_DFL);
+  signal(SIGSEGV, SIG_DFL);
+  signal(SIGSTKFLT, SIG_DFL);
+  signal(SIGSYS, SIG_DFL);
+  signal(SIGTRAP, SIG_DFL);
+#endif
+
   if (getenv("AFL_DISABLE_LLVM_INSTRUMENTATION")) return;
 
   if (getenv(DEFER_ENV_VAR)) return;