diff options
-rw-r--r-- | libdislocator/libdislocator.so.c | 8 | ||||
-rw-r--r-- | libtokencap/Makefile | 9 | ||||
-rw-r--r-- | libtokencap/libtokencap.so.c | 17 |
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 } |