Index: /trunk/src/VBox/Main/darwin/iokit.cpp
===================================================================
--- /trunk/src/VBox/Main/darwin/iokit.cpp	(revision 8151)
+++ /trunk/src/VBox/Main/darwin/iokit.cpp	(revision 8152)
@@ -638,5 +638,5 @@
 /**
  * Worker function for DarwinGetUSBDevices() that tries to figure out
- * what state the device is in.
+ * what state the device is in and set enmState.
  *
  * This is mostly a matter of distinguishing between devices that nobody
@@ -657,5 +657,7 @@
         return;
 
+    bool fHaveOwner = false;
     RTPROCESS Owner = NIL_RTPROCESS;
+    bool fHaveClient = false;
     RTPROCESS Client = NIL_RTPROCESS;
     bool fUserClientOnly = true;
@@ -726,6 +728,6 @@
             if (krc == KERN_SUCCESS)
             {
-                darwinDictGetProccess(PropsRef, CFSTR(VBOXUSB_OWNER_KEY), &Owner);
-                darwinDictGetProccess(PropsRef, CFSTR(VBOXUSB_CLIENT_KEY), &Client);
+                fHaveOwner = darwinDictGetProccess(PropsRef, CFSTR(VBOXUSB_OWNER_KEY), &Owner);
+                fHaveClient = darwinDictGetProccess(PropsRef, CFSTR(VBOXUSB_CLIENT_KEY), &Client);
                 CFRelease(PropsRef);
             }
@@ -739,9 +741,8 @@
      * Calc the status.
      */
-    if (    Owner != NIL_RTPROCESS
-        &&  !Owner)
+    if (fHaveOwner)
     {
         if (Owner == RTProcSelf())
-            pCur->enmState = Client == NIL_RTPROCESS || !Client
+            pCur->enmState = !fHaveClient || Client == NIL_RTPROCESS || !Client
                            ? USBDEVICESTATE_HELD_BY_PROXY
                            : USBDEVICESTATE_USED_BY_GUEST;
