about summary refs log tree commit diff
diff options
context:
space:
mode:
authorvan Hauser <vh@thc.org>2020-08-07 10:37:28 +0200
committervan Hauser <vh@thc.org>2020-08-07 10:37:28 +0200
commit420b202124c729dbbc777f21c56b1f05c21ee9fe (patch)
treebdfb2c80443747367ef4f8fddc52d9beb5bfcffc
parentfb14e55cc960e03443c1c7b608287398a0cf0d3e (diff)
downloadafl++-420b202124c729dbbc777f21c56b1f05c21ee9fe.tar.gz
temporary fix for cmplog
-rw-r--r--llvm_mode/afl-llvm-rt.o.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/llvm_mode/afl-llvm-rt.o.c b/llvm_mode/afl-llvm-rt.o.c
index 0d498de7..4cb99d0d 100644
--- a/llvm_mode/afl-llvm-rt.o.c
+++ b/llvm_mode/afl-llvm-rt.o.c
@@ -905,6 +905,8 @@ void __sanitizer_cov_trace_pc_guard_init(uint32_t *start, uint32_t *stop) {
   u32   inst_ratio = 100;
   char *x;
 
+  fprintf(stderr, "Running __sanitizer_cov_trace_pc_guard_init: %p-%p\n", start, stop);
+
   if (start == stop || *start) return;
 
   x = getenv("AFL_INST_RATIO");
@@ -940,7 +942,7 @@ void __sanitizer_cov_trace_pc_guard_init(uint32_t *start, uint32_t *stop) {
 
 void __cmplog_ins_hook1(uint8_t arg1, uint8_t arg2) {
 
-  if (!__afl_cmp_map) return;
+  if (!__afl_cmp_map || __afl_cmp_map == __afl_area_initial) return;
 
   uintptr_t k = (uintptr_t)__builtin_return_address(0);
   k = (k >> 4) ^ (k << 8);
@@ -984,7 +986,7 @@ void __cmplog_ins_hook2(uint16_t arg1, uint16_t arg2) {
 
 void __cmplog_ins_hook4(uint32_t arg1, uint32_t arg2) {
 
-  if (!__afl_cmp_map) return;
+  if (!__afl_cmp_map || __afl_cmp_map == __afl_area_initial) return;
 
   uintptr_t k = (uintptr_t)__builtin_return_address(0);
   k = (k >> 4) ^ (k << 8);
@@ -1005,7 +1007,7 @@ void __cmplog_ins_hook4(uint32_t arg1, uint32_t arg2) {
 
 void __cmplog_ins_hook8(uint64_t arg1, uint64_t arg2) {
 
-  if (!__afl_cmp_map) return;
+  if (!__afl_cmp_map || __afl_cmp_map == __afl_area_initial) return;
 
   uintptr_t k = (uintptr_t)__builtin_return_address(0);
   k = (k >> 4) ^ (k << 8);
@@ -1056,7 +1058,7 @@ void __sanitizer_cov_trace_cmp8(uint64_t arg1, uint64_t arg2)
 
 void __sanitizer_cov_trace_switch(uint64_t val, uint64_t *cases) {
 
-  if (!__afl_cmp_map) return;
+  if (!__afl_cmp_map || __afl_cmp_map == __afl_area_initial) return;
 
   for (uint64_t i = 0; i < cases[0]; i++) {
 
@@ -1095,7 +1097,7 @@ static int area_is_mapped(void *ptr, size_t len) {
 
 void __cmplog_rtn_hook(u8 *ptr1, u8 *ptr2) {
 
-  if (!__afl_cmp_map) return;
+  if (!__afl_cmp_map || __afl_cmp_map == __afl_area_initial) return;
 
   if (!area_is_mapped(ptr1, 32) || !area_is_mapped(ptr2, 32)) return;