}
if (ret == -1) {
- PrintError("Could not translate Instruction Address (%p)\n", (void *)core->rip);
+ PrintError("Could not translate Instruction Address (%p)\n", (void *)(addr_t)core->rip);
return -1;
}
mem_op_size = ((uint_t)src_req_size < (uint_t)dst_req_size) ? src_req_size : dst_req_size;
+ if (mem_op_size == -1) {
+ PrintError("Error: Did not detect any memory operands...\n");
+ return -1;
+ }
+
/* Now handle the hooks if necessary */
if ( (src_hook != NULL) && (src_hook->read != NULL) &&
// We do not support unhooking subregions
int v3_unhook_mem(struct v3_vm_info * vm, uint16_t core_id, addr_t guest_addr_start) {
struct v3_mem_region * reg = v3_get_mem_region(vm, core_id, guest_addr_start);
- struct mem_hook * hook = reg->priv_data;
+ struct mem_hook * hook = NULL;
+
+ if (reg == NULL) {
+ PrintError("Could not find region at %p\n", (void *)guest_addr_start);
+ return -1;
+ }
+
+ hook = reg->priv_data;
+
+ if (hook == NULL) {
+ PrintError("Trying to unhook region that is not a hook at %p\n", (void *)guest_addr_start);
+ return -1;
+ }
+
free_hook(vm, hook);