VirtualBox

Changeset 23883 in vbox


Ignore:
Timestamp:
Oct 19, 2009 6:52:12 PM (15 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
53665
Message:

SharedClipboard: SSMR3[Put|Get]Mem band-aid.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/HostServices/SharedClipboard/service.cpp

    r21651 r23883  
    757757} CLIPSAVEDSTATEDATA;
    758758
     759
     760/**
     761 * SSM descriptor table for the CLIPSAVEDSTATEDATA structure.
     762 */
     763static SSMFIELD const g_aClipSavedStateDataFields[] =
     764{
     765    SSMFIELD_ENTRY_IGN_HCPTR(       CLIPSAVEDSTATEDATA, pNext),
     766    SSMFIELD_ENTRY_IGN_HCPTR(       CLIPSAVEDSTATEDATA, pPrev),
     767    SSMFIELD_ENTRY_IGN_HCPTR(       CLIPSAVEDSTATEDATA, pCtx),
     768    SSMFIELD_ENTRY(                 CLIPSAVEDSTATEDATA, u32ClientID),
     769    SSMFIELD_ENTRY_CUSTOM(fMsgQuit+fMsgReadData+fMsgFormats, RT_OFFSETOF(CLIPSAVEDSTATEDATA, u32ClientID) + 4, 4),
     770    SSMFIELD_ENTRY_IGN_HCPTR(       CLIPSAVEDSTATEDATA, async.callHandle),
     771    SSMFIELD_ENTRY_IGN_HCPTR(       CLIPSAVEDSTATEDATA, async.paParms),
     772    SSMFIELD_ENTRY_IGNORE(          CLIPSAVEDSTATEDATA, data.pv),
     773    SSMFIELD_ENTRY_IGNORE(          CLIPSAVEDSTATEDATA, data.cb),
     774    SSMFIELD_ENTRY_IGNORE(          CLIPSAVEDSTATEDATA, data.u32Format),
     775    SSMFIELD_ENTRY_IGNORE(          CLIPSAVEDSTATEDATA, u32AvailableFormats),
     776    SSMFIELD_ENTRY(                 CLIPSAVEDSTATEDATA, u32RequestedFormat),
     777    SSMFIELD_ENTRY_TERM()
     778};
     779
    759780static DECLCALLBACK(int) svcSaveState(void *, uint32_t u32ClientID, void *pvClient, PSSMHANDLE pSSM)
    760781{
     
    811832    int rc = SSMR3GetU32(pSSM, &len);
    812833    AssertRCReturn(rc, rc);
    813 
     834#if 1
     835    uint32_t cbExpected = SSMR3HandleHostBits (pSSM) == 64 ? 72 : 48;
     836    if (len != cbExpected)
     837    {
     838        LogRel2(("Client data size mismatch: expected %d, got %d\n", cbExpected, len));
     839        return VERR_SSM_DATA_UNIT_FORMAT_CHANGED;
     840    }
     841    CLIPSAVEDSTATEDATA savedState;
     842    RT_ZERO (savedState);
     843    rc = SSMR3GetStructEx (pSSM, &savedState, sizeof(savedState), SSMSTRUCT_FLAGS_MEM_BAND_AID,
     844                           &g_aClipSavedStateDataFields[0], NULL);
     845    AssertRCReturn (rc, rc);
     846
     847#else
    814848    if (len != sizeof(CLIPSAVEDSTATEDATA))
    815849    {
     
    821855    rc = SSMR3GetMem(pSSM, &savedState, sizeof(savedState));
    822856    AssertRCReturn(rc, rc);
     857#endif
    823858
    824859    /* Verify the loaded clients data and update the pClient. */
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