about summary refs log tree commit diff
diff options
context:
space:
mode:
authorDominik Maier <domenukk@gmail.com>2020-06-23 11:01:22 +0200
committerGitHub <noreply@github.com>2020-06-23 11:01:22 +0200
commit59e1a18197b08b08ad9e75b23fb6a5c740a0b9dd (patch)
tree6d6064f523ee22f395caafa5587839424a10bb38
parent7119bf5d860657dab7afb60fab8b7ad5dc0ef222 (diff)
parent8f98044d691bf604245554bec029f67b53819bd9 (diff)
downloadafl++-59e1a18197b08b08ad9e75b23fb6a5c740a0b9dd.tar.gz
Merge pull request #422 from devnexen/haiku__build_upd
Haiku  build upd
-rw-r--r--libdislocator/libdislocator.so.c8
-rw-r--r--libtokencap/Makefile9
-rw-r--r--libtokencap/libtokencap.so.c17
3 files changed, 26 insertions, 8 deletions
diff --git a/libdislocator/libdislocator.so.c b/libdislocator/libdislocator.so.c
index 73c3b3e3..063e3590 100644
--- a/libdislocator/libdislocator.so.c
+++ b/libdislocator/libdislocator.so.c
@@ -37,10 +37,12 @@
   #include <sys/param.h>
 #endif
 
-#if defined(__linux__) && !defined(__ANDROID__)
+#if (defined(__linux__) && !defined(__ANDROID__)) || defined(__HAIKU__)
   #include <unistd.h>
-  #include <sys/syscall.h>
-  #include <malloc.h>
+  #ifdef __linux__
+   #include <sys/syscall.h>
+   #include <malloc.h>
+  #endif
   #ifdef __NR_getrandom
     #define arc4random_buf(p, l)                       \
       do {                                             \
diff --git a/libtokencap/Makefile b/libtokencap/Makefile
index 75a8d337..63b87bb0 100644
--- a/libtokencap/Makefile
+++ b/libtokencap/Makefile
@@ -35,10 +35,11 @@ _UNIQ=_QINU_
  _____OS_DL =  $(____OS_DL:$(_UNIQ)$(UNAME_S)=)
 ______OS_DL = $(_____OS_DL:$(_UNIQ)="-ldl")
 
-   _OS_TARGET = $(____OS_DL:$(_UNIQ)FreeBSD=$(_UNIQ))
-  __OS_TARGET =   $(_OS_TARGET:$(_UNIQ)OpenBSD=$(_UNIQ))
- ___OS_TARGET =  $(__OS_TARGET:$(_UNIQ)NetBSD=$(_UNIQ))
-____OS_TARGET = $(___OS_TARGET:$(_UNIQ)$(UNAME_S)=)
+    _OS_TARGET = $(____OS_DL:$(_UNIQ)FreeBSD=$(_UNIQ))
+   __OS_TARGET =    $(_OS_TARGET:$(_UNIQ)OpenBSD=$(_UNIQ))
+  ___OS_TARGET =   $(__OS_TARGET:$(_UNIQ)NetBSD=$(_UNIQ))
+ ____OS_TARGET =  $(___OS_TARGET:$(_UNIQ)Haiku=$(_UNIQ))
+_____OS_TARGET = $(___OS_TARGET:$(_UNIQ)$(UNAME_S)=)
 
 TARGETS       = $(____OS_TARGET:$(_UNIQ)=libtokencap.so)
 
diff --git a/libtokencap/libtokencap.so.c b/libtokencap/libtokencap.so.c
index 5a7cf3aa..88b5c041 100644
--- a/libtokencap/libtokencap.so.c
+++ b/libtokencap/libtokencap.so.c
@@ -34,7 +34,8 @@
 #include "../config.h"
 
 #if !defined __linux__ && !defined __APPLE__ && !defined __FreeBSD__ && \
-    !defined __OpenBSD__ && !defined __NetBSD__ && !defined __DragonFly__
+    !defined __OpenBSD__ && !defined __NetBSD__ && !defined __DragonFly__ && \
+    !defined(__HAIKU__)
   #error "Sorry, this library is unsupported in this platform for now!"
 #endif /* !__linux__ && !__APPLE__ && ! __FreeBSD__ && ! __OpenBSD__ && \
           !__NetBSD__*/
@@ -49,6 +50,8 @@
     #include <sys/user.h>
   #endif
   #include <sys/mman.h>
+#elif defined __HAIKU__
+  #include <kernel/image.h>
 #endif
 
 #include <dlfcn.h>
@@ -230,6 +233,18 @@ static void __tokencap_load_mappings(void) {
   }
 
   munmap(buf, len);
+  #elif defined __HAIKU__
+  image_info ii;
+  int32_t group = 0;
+
+  while (get_next_image_info(0, &group, &ii) == B_OK) {
+
+    __tokencap_ro[__tokencap_ro_cnt].st = ii.text; 
+    __tokencap_ro[__tokencap_ro_cnt].en = ((char *)ii.text) + ii.text_size; 
+
+      if (++__tokencap_ro_cnt == MAX_MAPPINGS) break;
+
+  }
 #endif
 
 }