VirtualBox

Changeset 84996 in vbox for trunk/src/VBox/HostServices


Ignore:
Timestamp:
Jun 29, 2020 4:21:34 PM (5 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
138891
Message:

Shared Clipboard/Transfers: Removed some superfluous HGCM parameters. Untested.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/HostServices/SharedClipboard/VBoxSharedClipboardSvc-transfers.cpp

    r84142 r84996  
    791791    if (cParms >= VBOX_SHCL_CPARMS_REPLY_MIN)
    792792    {
    793         uint32_t cbPayload = 0;
    794 
    795793        /* aParms[0] has the context ID. */
    796794        rc = HGCMSvcGetU32(&aParms[1], &pReply->uType);
     
    798796            rc = HGCMSvcGetU32(&aParms[2], &pReply->rc);
    799797        if (RT_SUCCESS(rc))
    800             rc = HGCMSvcGetU32(&aParms[3], &cbPayload);
    801         if (RT_SUCCESS(rc))
    802         {
    803             rc = HGCMSvcGetPv(&aParms[4], &pReply->pvPayload, &pReply->cbPayload);
    804             AssertReturn(cbPayload == pReply->cbPayload, VERR_INVALID_PARAMETER);
    805         }
     798            rc = HGCMSvcGetPv(&aParms[3], &pReply->pvPayload, &pReply->cbPayload);
    806799
    807800        if (RT_SUCCESS(rc))
     
    809802            rc = VERR_INVALID_PARAMETER; /* Play safe. */
    810803
     804            const unsigned idxParm = VBOX_SHCL_CPARMS_REPLY_MIN;
     805
    811806            switch (pReply->uType)
    812807            {
    813808                case VBOX_SHCL_REPLYMSGTYPE_TRANSFER_STATUS:
    814809                {
    815                     if (cParms >= 6)
    816                         rc = HGCMSvcGetU32(&aParms[5], &pReply->u.TransferStatus.uStatus);
     810                    if (cParms > idxParm)
     811                        rc = HGCMSvcGetU32(&aParms[idxParm], &pReply->u.TransferStatus.uStatus);
    817812
    818813                    LogFlowFunc(("uTransferStatus=%RU32\n", pReply->u.TransferStatus.uStatus));
     
    822817                case VBOX_SHCL_REPLYMSGTYPE_LIST_OPEN:
    823818                {
    824                     if (cParms >= 6)
    825                         rc = HGCMSvcGetU64(&aParms[5], &pReply->u.ListOpen.uHandle);
     819                    if (cParms > idxParm)
     820                        rc = HGCMSvcGetU64(&aParms[idxParm], &pReply->u.ListOpen.uHandle);
    826821
    827822                    LogFlowFunc(("hListOpen=%RU64\n", pReply->u.ListOpen.uHandle));
     
    831826                case VBOX_SHCL_REPLYMSGTYPE_LIST_CLOSE:
    832827                {
    833                     if (cParms >= 6)
    834                         rc = HGCMSvcGetU64(&aParms[5], &pReply->u.ListClose.uHandle);
     828                    if (cParms > idxParm)
     829                        rc = HGCMSvcGetU64(&aParms[idxParm], &pReply->u.ListClose.uHandle);
    835830
    836831                    LogFlowFunc(("hListClose=%RU64\n", pReply->u.ListClose.uHandle));
     
    840835                case VBOX_SHCL_REPLYMSGTYPE_OBJ_OPEN:
    841836                {
    842                     if (cParms >= 6)
    843                         rc = HGCMSvcGetU64(&aParms[5], &pReply->u.ObjOpen.uHandle);
     837                    if (cParms > idxParm)
     838                        rc = HGCMSvcGetU64(&aParms[idxParm], &pReply->u.ObjOpen.uHandle);
    844839
    845840                    LogFlowFunc(("hObjOpen=%RU64\n", pReply->u.ObjOpen.uHandle));
     
    849844                case VBOX_SHCL_REPLYMSGTYPE_OBJ_CLOSE:
    850845                {
    851                     if (cParms >= 6)
    852                         rc = HGCMSvcGetU64(&aParms[5], &pReply->u.ObjClose.uHandle);
     846                    if (cParms > idxParm)
     847                        rc = HGCMSvcGetU64(&aParms[idxParm], &pReply->u.ObjClose.uHandle);
    853848
    854849                    LogFlowFunc(("hObjClose=%RU64\n", pReply->u.ObjClose.uHandle));
     
    947942    if (cParms == VBOX_SHCL_CPARMS_LIST_OPEN)
    948943    {
    949         uint32_t cbPath   = 0;
    950         uint32_t cbFilter = 0;
    951 
    952944        rc = HGCMSvcGetU32(&aParms[1], &pOpenParms->fList);
    953945        if (RT_SUCCESS(rc))
    954             rc = HGCMSvcGetU32(&aParms[2], &cbFilter);
    955         if (RT_SUCCESS(rc))
    956         {
    957             rc = HGCMSvcGetStr(&aParms[3], &pOpenParms->pszFilter, &pOpenParms->cbFilter);
    958             AssertReturn(cbFilter == pOpenParms->cbFilter, VERR_INVALID_PARAMETER);
    959         }
    960         if (RT_SUCCESS(rc))
    961             rc = HGCMSvcGetU32(&aParms[4], &cbPath);
    962         if (RT_SUCCESS(rc))
    963         {
    964             rc = HGCMSvcGetStr(&aParms[5], &pOpenParms->pszPath, &pOpenParms->cbPath);
    965             AssertReturn(cbPath == pOpenParms->cbPath, VERR_INVALID_PARAMETER);
    966         }
     946            rc = HGCMSvcGetStr(&aParms[2], &pOpenParms->pszFilter, &pOpenParms->cbFilter);
     947        if (RT_SUCCESS(rc))
     948            rc = HGCMSvcGetStr(&aParms[3], &pOpenParms->pszPath, &pOpenParms->cbPath);
    967949
    968950        /** @todo Some more validation. */
     
    993975        HGCMSvcSetU64(&aParms[0], idCtx);
    994976        HGCMSvcSetU32(&aParms[1], pOpenParms->fList);
    995         HGCMSvcSetU32(&aParms[2], pOpenParms->cbFilter);
    996         HGCMSvcSetPv (&aParms[3], pOpenParms->pszFilter, pOpenParms->cbFilter);
    997         HGCMSvcSetU32(&aParms[4], pOpenParms->cbPath);
    998         HGCMSvcSetPv (&aParms[5], pOpenParms->pszPath, pOpenParms->cbPath);
    999         HGCMSvcSetU64(&aParms[6], 0); /* OUT: uHandle */
     977        HGCMSvcSetPv (&aParms[2], pOpenParms->pszFilter, pOpenParms->cbFilter);
     978        HGCMSvcSetPv (&aParms[3], pOpenParms->pszPath, pOpenParms->cbPath);
     979        HGCMSvcSetU64(&aParms[4], 0); /* OUT: uHandle */
    1000980
    1001981        rc = VINF_SUCCESS;
     
    16231603            RT_ZERO(openCreateParms);
    16241604
    1625             uint32_t cbPath;
    1626             rc = HGCMSvcGetU32(&aParms[2], &cbPath); /** @todo r=bird: This is an pointless parameter. */
    1627             if (RT_SUCCESS(rc))
    1628             {
    1629                 /** @todo r=bird: This is the wrong way of getting a string!   */
    1630                 rc = HGCMSvcGetPv(&aParms[3], (void **)&openCreateParms.pszPath, &openCreateParms.cbPath);
    1631                 if (cbPath != openCreateParms.cbPath)
    1632                     rc = VERR_INVALID_PARAMETER;
    1633             }
    1634             if (RT_SUCCESS(rc))
    1635                 rc = HGCMSvcGetU32(&aParms[4], &openCreateParms.fCreate);
     1605            /* aParms[1] will return the object handle on success; see below. */
     1606            rc = HGCMSvcGetStr(&aParms[2], &openCreateParms.pszPath, &openCreateParms.cbPath);
     1607            if (RT_SUCCESS(rc))
     1608                rc = HGCMSvcGetU32(&aParms[3], &openCreateParms.fCreate);
    16361609
    16371610            if (RT_SUCCESS(rc))
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