VirtualBox

Changeset 104792 in vbox for trunk/src/VBox


Ignore:
Timestamp:
May 27, 2024 3:32:58 PM (6 months ago)
Author:
vboxsync
Message:

Shared Clipboard: X11: Prevent memory leak on clipboard protocol errors, bugref:10698.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/GuestHost/SharedClipboard/clipboard-x11.cpp

    r104791 r104792  
    27372737                if (pPayload)
    27382738                {
    2739                     AssertReturn(pPayload->cbData == sizeof(SHCLX11RESPONSE), VERR_INVALID_PARAMETER);
    2740                     AssertPtrReturn(pPayload->pvData, VERR_INVALID_POINTER);
    2741                     PSHCLX11RESPONSE pResp = (PSHCLX11RESPONSE)pPayload->pvData;
    2742                     AssertReturn(pResp->enmType == SHCLX11EVENTTYPE_READ, VERR_INVALID_PARAMETER);
    2743 
    2744                     pPayload->pvData = NULL; /* pvData (pResp) is owned by ppResp now. */
    2745                     pPayload->cbData = 0;
    2746 
    2747                     ShClPayloadFree(pPayload);
    2748 
    2749                     *ppResp = pResp;
     2739                    if (   pPayload->cbData == sizeof(SHCLX11RESPONSE)
     2740                        && RT_VALID_PTR(pPayload->pvData))
     2741                    {
     2742                        PSHCLX11RESPONSE pResp = (PSHCLX11RESPONSE)pPayload->pvData;
     2743                        if (pResp->enmType == SHCLX11EVENTTYPE_READ)
     2744                        {
     2745                            pPayload->pvData = NULL; /* pvData (pResp) is owned by ppResp now. */
     2746                            pPayload->cbData = 0;
     2747
     2748                            ShClPayloadFree(pPayload);
     2749
     2750                            *ppResp = pResp;
     2751                        }
     2752                        else
     2753                            rc = VERR_INVALID_PARAMETER;
     2754                    }
     2755                    else
     2756                        rc = VERR_INVALID_PARAMETER;
    27502757                }
    27512758                else /* No payload given; could happen on invalid / not-expected formats. */
Note: See TracChangeset for help on using the changeset viewer.

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