From 654aef11479e5e9a7c04d658c8018f693653b5cd Mon Sep 17 00:00:00 2001 From: Andrea Fioraldi Date: Wed, 7 Jul 2021 14:34:27 +0200 Subject: [PATCH] fix registers read bug and expose load_addr to Rust --- cpu.c | 1 + linux-user/main.c | 10 +++++++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/cpu.c b/cpu.c index 84162d05f8..a96f8cee34 100644 --- a/cpu.c +++ b/cpu.c @@ -83,6 +83,7 @@ int libafl_qemu_read_reg(int reg, uint8_t* val) CPUClass *cc = CPU_GET_CLASS(cpu); if (reg < cc->gdb_num_core_regs) { + g_byte_array_set_size(libafl_qemu_mem_buf, 0); int len = cc->gdb_read_register(cpu, libafl_qemu_mem_buf, reg); if (len > 0) { memcpy(val, libafl_qemu_mem_buf->data, len); diff --git a/linux-user/main.c b/linux-user/main.c index 62c3de278f..284d3ea764 100644 --- a/linux-user/main.c +++ b/linux-user/main.c @@ -627,11 +627,18 @@ static int parse_args(int argc, char **argv) //// --- Begin LibAFL code --- +uint64_t libafl_load_addr(void); int libafl_qemu_main(void); int libafl_qemu_run(void); static CPUArchState *libafl_qemu_env; +struct image_info libafl_image_info; + +uint64_t libafl_load_addr(void) { + return libafl_image_info.load_addr; +} + __attribute__((weak)) int libafl_qemu_main(void) { libafl_qemu_run(); @@ -649,7 +656,8 @@ int libafl_qemu_run(void) int main(int argc, char **argv, char **envp) { struct target_pt_regs regs1, *regs = ®s1; - struct image_info info1, *info = &info1; + //struct image_info info1, *info = &info1; + struct image_info *info = &libafl_image_info; struct linux_binprm bprm; TaskState *ts; CPUArchState *env;