darwin: improve the error message on kernel driver detach failure
authorNathan Hjelm <hjelmn@google.com>
Sun, 8 Aug 2021 15:16:38 +0000 (09:16 -0600)
committerNathan Hjelm <hjelmn@google.com>
Sun, 8 Aug 2021 15:19:21 +0000 (09:19 -0600)
Detaching a kernel driver in macOS requires that either the binary has the
com.apple.vm.device-access entitlement or is run with effective UID 0 (root). This
commit adds an effective UID check before attempting to capture a device and prints
a warning that neither is the user root nor does the binary have the correct
entitlement.

Signed-off-by: Nathan Hjelm <hjelmn@google.com>
libusb/os/darwin_usb.c
libusb/version_nano.h

index 5d31088..b6cc359 100644 (file)
@@ -2454,6 +2454,10 @@ static int darwin_detach_kernel_driver (struct libusb_device_handle *dev_handle,
       }
     } else {
       usbi_info (ctx, "no capture entitlements. may not be able to detach the kernel driver for this device");
+      if (0 != geteuid()) {
+        usbi_warn (ctx, "USB device capture requires either an entitlement (com.apple.vm.device-access) or root privelege");
+        return LIBUSB_ERROR_ACCESS;
+      }
     }
 
     /* reset device to release existing drivers */
index 981f704..f5aaa73 100644 (file)
@@ -1 +1 @@
-#define LIBUSB_NANO 11648
+#define LIBUSB_NANO 11649