diff --git a/mem.c b/mem.c index d57f4c9..92cf526 100644 --- a/mem.c +++ b/mem.c @@ -16,7 +16,7 @@ void segfault_handler(int signal_num) { exit(signal_num); } } -int tryDereference(uintptr_t* pointer, uintptr_t* output) { +int tryDereference(uint8_t* pointer, uint8_t* output) { uintptr_t val; if (setjmp(env_buffer) == 0) { enable_handler = 1; @@ -30,13 +30,11 @@ int tryDereference(uintptr_t* pointer, uintptr_t* output) { } } void printMem(uint8_t* location) { - if (setjmp(env_buffer) == 0) { - enable_handler = 1; - printf("%p: 0x%02x\n", location, *location); - enable_handler = 0; + uint8_t value; + if(tryDereference(location, &value)) { + printf("%p: 0x%02x\n", location, value); } else { - enable_handler = 0; printf("%p: SEGFAULT\n", location); } }