diff options
Diffstat (limited to 'miasm2/jitter/vm_mngr.c')
| -rw-r--r-- | miasm2/jitter/vm_mngr.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/miasm2/jitter/vm_mngr.c b/miasm2/jitter/vm_mngr.c index 8df039b4..8022b32c 100644 --- a/miasm2/jitter/vm_mngr.c +++ b/miasm2/jitter/vm_mngr.c @@ -449,6 +449,7 @@ void add_mem_read(vm_mngr_t* vm_mngr, uint64_t addr, uint64_t size) void add_mem_write(vm_mngr_t* vm_mngr, uint64_t addr, uint64_t size) { add_range_to_pylist(vm_mngr->memory_w, addr, addr + size); + vm_mngr->write_num++; } void check_invalid_code_blocs(vm_mngr_t* vm_mngr) @@ -459,6 +460,9 @@ void check_invalid_code_blocs(vm_mngr_t* vm_mngr) struct code_bloc_node * cbp; uint64_t addr_start, addr_stop; + if (vm_mngr->write_num == 0) + return; + list_size = PyList_Size(vm_mngr->memory_w); LIST_FOREACH(cbp, &vm_mngr->code_bloc_pool, next){ @@ -493,6 +497,9 @@ void check_memory_breakpoint(vm_mngr_t* vm_mngr) uint64_t addr_start, addr_stop; struct memory_breakpoint_info * memory_bp; + if (vm_mngr->write_num == 0) + return; + /* Check Write memory breakpoint */ list_size = PyList_Size(vm_mngr->memory_w); LIST_FOREACH(memory_bp, &vm_mngr->memory_breakpoint_pool, next) { @@ -1537,6 +1544,7 @@ void init_code_bloc_pool(vm_mngr_t* vm_mngr) vm_mngr->memory_r = PyList_New(0); vm_mngr->memory_w = PyList_New(0); + vm_mngr->write_num = 0; } @@ -1583,6 +1591,8 @@ void reset_memory_access(vm_mngr_t* vm_mngr) reset_pylist(vm_mngr->memory_w); vm_mngr->memory_w = PyList_New(0); + vm_mngr->write_num = 0; + } void reset_memory_breakpoint(vm_mngr_t* vm_mngr) |