From c8fe68fb3decf6215082a441ecae0553cbacddc2 Mon Sep 17 00:00:00 2001 From: practicalswift Date: Sun, 15 Nov 2015 00:04:34 +0100 Subject: [PATCH] Add test case for issue #266 ("Invalid read of size 4" in cpu_tb_exec). --- tests/regress/invalid_read_in_cpu_tb_exec.c | 28 +++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 tests/regress/invalid_read_in_cpu_tb_exec.c diff --git a/tests/regress/invalid_read_in_cpu_tb_exec.c b/tests/regress/invalid_read_in_cpu_tb_exec.c new file mode 100644 index 00000000..8e309caa --- /dev/null +++ b/tests/regress/invalid_read_in_cpu_tb_exec.c @@ -0,0 +1,28 @@ +#include + +static void hook_block(uc_engine *uc, uint64_t address, uint32_t size, void *user_data) { + printf("hook_block(…)\n"); +} + +#define BINARY "\x80\x05\xff\xff\xff\xff\x30\xeb\xf7\x30" +#define MEMORY_SIZE 2 * 1024 * 1024 +#define STARTING_ADDRESS 0x1000000 + +int main(int argc, char **argv, char **envp) { + uc_engine *uc; + if (uc_open(UC_ARCH_X86, UC_MODE_64, &uc)) { + printf("uc_open(…) failed\n"); + return 1; + } + uc_mem_map(uc, STARTING_ADDRESS, MEMORY_SIZE, UC_PROT_ALL); + if (uc_mem_write(uc, STARTING_ADDRESS, BINARY, sizeof(BINARY) - 1)) { + printf("uc_mem_write(…) failed\n"); + return 1; + } + uc_hook hook; + uc_hook_add(uc, &hook, UC_HOOK_BLOCK, hook_block, NULL, 1, 0); + printf("uc_emu_start(…)\n"); + uc_emu_start(uc, STARTING_ADDRESS, STARTING_ADDRESS + sizeof(BINARY) - 1, 0, 0); + printf("done\n"); + return 0; +}