VirtualBox

Changeset 60156 in vbox for trunk/src/VBox/HostDrivers


Ignore:
Timestamp:
Mar 23, 2016 11:44:24 AM (9 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
106175
Message:

USB: Purge strings.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/HostDrivers/VBoxUSB/win/lib/VBoxUsbLib-win.cpp

    r59127 r60156  
    314314    for (; pDrList; pDrList = pDrList->pNext)
    315315    {
    316         char ** lppszString = NULL;
    317         if (pConInfo->DeviceDescriptor.iManufacturer && pDrList->iDr == pConInfo->DeviceDescriptor.iManufacturer)
    318         {
    319             lppszString = (char**)&pDev->pszManufacturer;
    320         }
    321         else if (pConInfo->DeviceDescriptor.iProduct && pDrList->iDr == pConInfo->DeviceDescriptor.iProduct)
    322         {
    323             lppszString = (char**)&pDev->pszProduct;
    324         }
    325         else if (pConInfo->DeviceDescriptor.iSerialNumber && pDrList->iDr == pConInfo->DeviceDescriptor.iSerialNumber)
    326         {
    327             lppszString = (char**)&pDev->pszSerialNumber;
    328         }
    329 
    330         if (lppszString)
    331         {
    332 /** @todo r=bird: This code is making bad asumptions that strings are sane and
    333  *  that stuff succeeds:
    334  *  http://vbox.innotek.de/pipermail/vbox-dev/2011-August/004516.html
    335  *
    336  *  */
    337             rc = RTUtf16ToUtf8((PCRTUTF16)pDrList->StrDr.bString, lppszString);
    338             if (RT_FAILURE(rc))
     316        char **ppszString = NULL;
     317        if (   pConInfo->DeviceDescriptor.iManufacturer
     318            && pDrList->iDr == pConInfo->DeviceDescriptor.iManufacturer)
     319            ppszString = (char **)&pDev->pszManufacturer;
     320        else if (   pConInfo->DeviceDescriptor.iProduct
     321                 && pDrList->iDr == pConInfo->DeviceDescriptor.iProduct)
     322            ppszString = (char **)&pDev->pszProduct;
     323        else if (   pConInfo->DeviceDescriptor.iSerialNumber
     324                 && pDrList->iDr == pConInfo->DeviceDescriptor.iSerialNumber)
     325            ppszString = (char **)&pDev->pszSerialNumber;
     326        if (ppszString)
     327        {
     328            rc = RTUtf16ToUtf8((PCRTUTF16)pDrList->StrDr.bString, ppszString);
     329            if (RT_SUCCESS(rc))
     330            {
     331                Assert(*ppszString);
     332                USBLibPurgeEncoding(ppszString);
     333
     334                if (pDrList->iDr == pConInfo->DeviceDescriptor.iSerialNumber)
     335                    pDev->u64SerialHash = USBLibHashSerial(pDev->pszSerialNumber);
     336            }
     337            else
    339338            {
    340339                AssertMsgFailed(("RTUtf16ToUtf8 failed, rc (%d), resuming\n", rc));
    341                 continue;
    342             }
    343 
    344             Assert(lppszString);
    345             if (pDrList->iDr == pConInfo->DeviceDescriptor.iSerialNumber)
    346             {
    347                 pDev->u64SerialHash = USBLibHashSerial(pDev->pszSerialNumber);
     340                *ppszString = NULL;
    348341            }
    349342        }
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette