diff options
author | Andrea Fioraldi <andreafioraldi@gmail.com> | 2021-05-18 16:43:38 +0200 |
---|---|---|
committer | Andrea Fioraldi <andreafioraldi@gmail.com> | 2021-05-18 16:43:38 +0200 |
commit | b669e772684fd98dc7a0c8f9e6032895e21a6de6 (patch) | |
tree | cd1d39afac8f151f37aa1a345891ebe1b4687072 /qemu_mode/libqasan/libqasan.c | |
parent | 257cc1e82a4f009ead66519bd70e9467de158a51 (diff) | |
download | afl++-b669e772684fd98dc7a0c8f9e6032895e21a6de6.tar.gz |
libqasan: use syscalls for read and write
Diffstat (limited to 'qemu_mode/libqasan/libqasan.c')
-rw-r--r-- | qemu_mode/libqasan/libqasan.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/qemu_mode/libqasan/libqasan.c b/qemu_mode/libqasan/libqasan.c index 9fc4ef7a..2ac0c861 100644 --- a/qemu_mode/libqasan/libqasan.c +++ b/qemu_mode/libqasan/libqasan.c @@ -61,9 +61,17 @@ void __libqasan_print_maps(void) { } -/*__attribute__((constructor))*/ void __libqasan_init() { +int __libqasan_is_initialized = 0; + +__attribute__((constructor)) void __libqasan_init() { + + if (__libqasan_is_initialized) return; + __libqasan_is_initialized = 1; __libqasan_init_hooks(); + + if (getenv("AFL_INST_LIBS") || getenv("QASAN_HOTPACH")) + __libqasan_hotpatch(); #ifdef DEBUG __qasan_debug = getenv("QASAN_DEBUG") != NULL; @@ -86,7 +94,6 @@ int __libc_start_main(int (*main)(int, char **, char **), int argc, char **argv, typeof(&__libc_start_main) orig = dlsym(RTLD_NEXT, "__libc_start_main"); __libqasan_init(); - if (getenv("AFL_INST_LIBS")) __libqasan_hotpatch(); return orig(main, argc, argv, init, fini, rtld_fini, stack_end); |