VirtualBox

Changeset 102468 in vbox for trunk/src


Ignore:
Timestamp:
Dec 5, 2023 10:37:41 AM (18 months ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
160611
Message:

Shared Clipboard: Added a dedicated event type for the X11 requests/responses. Needed for union access. Added some more checks. ​bugref:10384

Location:
trunk/src/VBox
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Additions/x11/VBoxClient/clipboard-x11.cpp

    r102462 r102468  
    9393                        if (pPayload)
    9494                        {
    95                             Assert(pPayload->cbData == sizeof(SHCLX11RESPONSE));
     95                            AssertReturnVoid(pPayload->cbData == sizeof(SHCLX11RESPONSE));
     96                            AssertReturnVoid(pPayload->pvData);
    9697                            PSHCLX11RESPONSE pResp = (PSHCLX11RESPONSE)pPayload->pvData;
     98                            AssertReturnVoid(pResp->enmType == SHCLX11EVENTTYPE_READ);
    9799
    98100                            rc = ShClTransferRootsInitFromStringListEx(pTransfer, (const char *)pResp->Read.pvData, pResp->Read.cbData,
     
    559561                                if (pPayload)
    560562                                {
    561                                     Assert(pPayload->cbData == sizeof(SHCLX11RESPONSE));
     563                                    AssertBreakStmt(pPayload->cbData == sizeof(SHCLX11RESPONSE), rc = VERR_INVALID_PARAMETER);
     564                                    AssertPtrBreakStmt(pPayload->pvData, rc = VERR_INVALID_POINTER);
    562565                                    PSHCLX11RESPONSE pResp = (PSHCLX11RESPONSE)pPayload->pvData;
     566                                    AssertBreakStmt(pResp->enmType == SHCLX11EVENTTYPE_READ, rc = VERR_INVALID_PARAMETER);
    563567
    564568                                    rc = VbglR3ClipboardWriteDataEx(&pCtx->CmdCtx, pEvent->u.fReadData,
  • trunk/src/VBox/GuestHost/SharedClipboard/clipboard-x11.cpp

    r102465 r102468  
    19801980
    19811981    PSHCLX11REQUEST pReq = (PSHCLX11REQUEST)pvUserData;
     1982    AssertReturnVoid(pReq->enmType == SHCLX11EVENTTYPE_REPORT_FORMATS);
    19821983
    19831984    PSHCLX11CTX pCtx     = pReq->pCtx;
     
    20202021    if (pReq)
    20212022    {
     2023        pReq->enmType          = SHCLX11EVENTTYPE_REPORT_FORMATS;
    20222024        pReq->pCtx             = pCtx;
    20232025        pReq->Formats.fFormats = uFormats;
     
    21212123
    21222124    /* Sanity. */
     2125    AssertReturnVoid(pReq->enmType == SHCLX11EVENTTYPE_READ);
    21232126    AssertReturnVoid(pReq->Read.uFmtVBox != VBOX_SHCL_FMT_NONE);
    21242127    AssertReturnVoid(pReq->Read.idxFmtX11 < SHCL_MAX_X11_FORMATS);
     
    23792382        if (pReq) /* Give some more clues, if available. */
    23802383        {
     2384            AssertReturnVoid(pReq->enmType == SHCLX11EVENTTYPE_READ);
    23812385            char *pszFmts = ShClFormatsToStrA(pReq->Read.uFmtVBox);
    23822386            AssertPtrReturnVoid(pszFmts);
     
    24752479
    24762480    PSHCLX11REQUEST   pReq = (PSHCLX11REQUEST)pvUserData;
     2481    AssertReturnVoid(pReq->enmType == SHCLX11EVENTTYPE_READ);
    24772482    SHCLX11CTX       *pCtx = pReq->pCtx;
    24782483    AssertPtrReturnVoid(pCtx);
     
    25822587    if (pReq)
    25832588    {
     2589        pReq->enmType       = SHCLX11EVENTTYPE_READ;
    25842590        pReq->pCtx          = pCtx;
    25852591        pReq->Read.uFmtVBox = uFmt;
     
    26362642                if (pPayload)
    26372643                {
    2638                     Assert(pPayload->cbData == sizeof(SHCLX11RESPONSE));
     2644                    AssertReturn(pPayload->cbData == sizeof(SHCLX11RESPONSE), VERR_INVALID_PARAMETER);
     2645                    AssertPtrReturn(pPayload->pvData, VERR_INVALID_POINTER);
    26392646                    PSHCLX11RESPONSE pResp = (PSHCLX11RESPONSE)pPayload->pvData;
     2647                    AssertReturn(pResp->enmType == SHCLX11EVENTTYPE_READ, VERR_INVALID_PARAMETER);
    26402648
    26412649                    memcpy(pvBuf, pResp->Read.pvData, RT_MIN(cbBuf, pResp->Read.cbData));
  • trunk/src/VBox/HostServices/SharedClipboard/VBoxSharedClipboardSvc-x11.cpp

    r102467 r102468  
    307307                if (pPayload)
    308308                {
    309                     Assert(pPayload->cbData == sizeof(SHCLX11RESPONSE));
     309                    AssertReturn(pPayload->cbData == sizeof(SHCLX11RESPONSE), VERR_INVALID_PARAMETER);
     310                    AssertPtrReturn(pPayload->pvData, VERR_INVALID_POINTER);
    310311                    PSHCLX11RESPONSE pResp = (PSHCLX11RESPONSE)pPayload->pvData;
     312                    AssertReturn(pResp->enmType == SHCLX11EVENTTYPE_READ, VERR_INVALID_PARAMETER);
    311313
    312314                    uint32_t const cbRead = pResp->Read.cbData;
     
    732734                if (pPayload)
    733735                {
    734                     Assert(pPayload->cbData == sizeof(SHCLX11RESPONSE));
    735                     AssertPtr(pPayload->pvData);
     736                    AssertReturn(pPayload->cbData == sizeof(SHCLX11RESPONSE), VERR_INVALID_PARAMETER);
     737                    AssertPtrReturn(pPayload->pvData, VERR_INVALID_POINTER);
    736738                    PSHCLX11RESPONSE pResp = (PSHCLX11RESPONSE)pPayload->pvData;
     739                    AssertReturn(pResp->enmType == SHCLX11EVENTTYPE_READ, VERR_INVALID_PARAMETER);
    737740
    738741                    rc = ShClTransferRootsInitFromStringList(pCtx->pTransfer,
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