diff --git a/watchsyscall/wa_callbacks.c b/watchsyscall/wa_callbacks.c index 63d3435d55ddd347693c08bbdd575cd3f8a87770..d2006763b2ad0b660c63057a1039943297712528 100644 --- a/watchsyscall/wa_callbacks.c +++ b/watchsyscall/wa_callbacks.c @@ -195,10 +195,16 @@ void zipr_post_allocate_watcher(int ret, reg_values_t rv) // print_int(*(int*)rv.edx); // print_str("\n"); #endif + int start=*(int*)(rv.edx); - int end=start+rv.ebx; + + // need to round up to nearest 4K! + // orig code: int end = start + rv.ebx; + int end = start + ((rv.ebx / PAGESIZE) * PAGESIZE); + if (rv.ebx % PAGESIZE > 0) + end += PAGESIZE; + end--; add_to_list(start,end); - }