about summary refs log tree commit diff
path: root/qemu_mode/patches/afl-qemu-common.h
diff options
context:
space:
mode:
authorAndrea Fioraldi <andreafioraldi@gmail.com>2019-10-23 19:48:18 +0200
committerAndrea Fioraldi <andreafioraldi@gmail.com>2019-10-23 19:48:18 +0200
commit297e9e3cf59540f16b8260a01ef7c6cd01d9e554 (patch)
tree7cea3603195656accf6c3f6c181c3a4dbc49fdb5 /qemu_mode/patches/afl-qemu-common.h
parentebea44029e019960cbf075dacd7b1a1f79d1bae2 (diff)
downloadafl++-297e9e3cf59540f16b8260a01ef7c6cd01d9e554.tar.gz
move is_valid_addr in afl-qemu-common.h
Diffstat (limited to 'qemu_mode/patches/afl-qemu-common.h')
-rw-r--r--qemu_mode/patches/afl-qemu-common.h18
1 files changed, 18 insertions, 0 deletions
diff --git a/qemu_mode/patches/afl-qemu-common.h b/qemu_mode/patches/afl-qemu-common.h
index 1da3359d..409a7eab 100644
--- a/qemu_mode/patches/afl-qemu-common.h
+++ b/qemu_mode/patches/afl-qemu-common.h
@@ -81,3 +81,21 @@ void tcg_gen_afl_compcov_log_call(void *func, target_ulong cur_loc,
 
 void tcg_gen_afl_maybe_log_call(target_ulong cur_loc);
 
+
+/* Check if an address is valid in the current mapping */
+
+static inline int is_valid_addr(target_ulong addr) {
+
+  int          l, flags;
+  target_ulong page;
+  void *       p;
+
+  page = addr & TARGET_PAGE_MASK;
+  l = (page + TARGET_PAGE_SIZE) - addr;
+
+  flags = page_get_flags(page);
+  if (!(flags & PAGE_VALID) || !(flags & PAGE_READ)) return 0;
+
+  return 1;
+
+}