From ff0984d1c801c6101eefe680c36f7e32b63b8d32 Mon Sep 17 00:00:00 2001 From: Gregor Haas Date: Sun, 15 Dec 2019 11:29:35 -0500 Subject: [PATCH] Some bugfixes and better error checking --- checkm8_remote/src/libusb_helpers.c | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/checkm8_remote/src/libusb_helpers.c b/checkm8_remote/src/libusb_helpers.c index 56f5b01..657c9f7 100644 --- a/checkm8_remote/src/libusb_helpers.c +++ b/checkm8_remote/src/libusb_helpers.c @@ -58,14 +58,24 @@ int get_device_bundle(struct pwned_device *dev) if(ret == LIBUSB_SUCCESS) { checkm8_debug_indent("\topening device and returning success\n"); - libusb_open(dev->bundle->device, &dev->bundle->handle); - libusb_set_auto_detach_kernel_driver(dev->bundle->handle, 1); + ret = libusb_open(dev->bundle->device, &dev->bundle->handle); + if(ret == 0) + { + libusb_set_auto_detach_kernel_driver(dev->bundle->handle, 1); + } + else + { + checkm8_debug_indent("\tfailed to open device\n"); + libusb_exit(dev->bundle->ctx); + free(dev->bundle->descriptor); + } + + return ret; } else { checkm8_debug_indent("\tcould not find a matching device\n"); libusb_exit(dev->bundle->ctx); - free(dev->bundle->ctx); free(dev->bundle->descriptor); dev->bundle->ctx = NULL; @@ -93,7 +103,6 @@ int release_device_bundle(struct pwned_device *dev) { checkm8_debug_indent("\texiting context\n");; libusb_exit(dev->bundle->ctx); - free(dev->bundle->ctx); dev->bundle->ctx = NULL; }