I spotted a few bugs: (possibly a few other places)
 
if (DeviceIoControl(hHub, IOCTL_USB_GET_NODE_CONNECTION_DRIVERKEY_NAME, pName, 
Name.ActualLength, pName, Name.ActualLength, &cbReturned, NULL))
{
rc = RTUtf16ToUtf8Ex((PCRTUTF16)pName->DriverKeyName, pName->ActualLength, 
plpszName, 0, NULL);
 
}
 
all length inside UNICODE_STRING refers to bytes in microsoft impl, this is the 
link:
 
http://msdn.microsoft.com/en-us/library/windows/hardware/ff540085(v=vs.85).aspx
 
so pName->ActualLength may cause buffer overflow, and needs to be divided by 2:
 
rc = RTUtf16ToUtf8Ex((PCRTUTF16)pName->DriverKeyName, 
pName->ActualLength/sizeof(WCHAR), plpszName, 0, NULL);
 
 
Other files might contain same errors, pls check.
 
_______________________________________________
vbox-dev mailing list
[email protected]
https://www.virtualbox.org/mailman/listinfo/vbox-dev

Reply via email to