VirtualBox

Changeset 94778 in vbox


Ignore:
Timestamp:
May 2, 2022 10:51:48 AM (3 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
151164
Message:

Main/{DisplayUtils,MachineImpl}: Prepare the various screenshot getters to handle encrypted SSM streams when accessing the saved state file, bugref:9955

Location:
trunk/src/VBox/Main
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Main/include/DisplayUtils.h

    r94773 r94778  
    2424#include "VBox/com/string.h"
    2525
     26#include "CryptoUtils.h"
     27
    2628using namespace com;
    2729
     
    3335#define sSSMDisplayVer5 0x00010005
    3436
    35 int readSavedGuestScreenInfo(const Utf8Str &strStateFilePath, uint32_t u32ScreenId,
    36                              uint32_t *pu32OriginX, uint32_t *pu32OriginY,
     37int readSavedGuestScreenInfo(SsmStream &ssmStream, const Utf8Str &strStateFilePath,
     38                             uint32_t u32ScreenId, uint32_t *pu32OriginX, uint32_t *pu32OriginY,
    3739                             uint32_t *pu32Width, uint32_t *pu32Height, uint16_t *pu16Flags);
    3840
    39 int readSavedDisplayScreenshot(const Utf8Str &strStateFilePath, uint32_t u32Type, uint8_t **ppu8Data,
    40                                uint32_t *pcbData, uint32_t *pu32Width, uint32_t *pu32Height);
     41int readSavedDisplayScreenshot(SsmStream &ssmStream, const Utf8Str &strStateFilePath,
     42                               uint32_t u32Type, uint8_t **ppu8Data, uint32_t *pcbData,
     43                               uint32_t *pu32Width, uint32_t *pu32Height);
    4144void freeSavedDisplayScreenshot(uint8_t *pu8Data);
    4245
  • trunk/src/VBox/Main/src-all/CryptoUtils.cpp

    r94777 r94778  
    114114    m_hVfsFile              = NIL_RTVFSFILE;
    115115    m_pSsm                  = NULL;
     116    m_pCryptoIf             = NULL;
    116117}
    117118
  • trunk/src/VBox/Main/src-all/DisplayUtils.cpp

    r94773 r94778  
    2323#include <VBoxVideo.h>
    2424
    25 int readSavedDisplayScreenshot(const Utf8Str &strStateFilePath, uint32_t u32Type, uint8_t **ppu8Data, uint32_t *pcbData,
     25int readSavedDisplayScreenshot(SsmStream &ssmStream, const Utf8Str &strStateFilePath,
     26                               uint32_t u32Type, uint8_t **ppu8Data, uint32_t *pcbData,
    2627                               uint32_t *pu32Width, uint32_t *pu32Height)
    2728{
     
    4142
    4243    PSSMHANDLE pSSM;
    43     int vrc = SSMR3Open(strStateFilePath.c_str(), NULL /*pStreamOps*/, NULL /*pvStreamOps*/,
    44                         0 /*fFlags*/, &pSSM);
     44    int vrc = ssmStream.open(strStateFilePath.c_str(), false /*fWrite*/, &pSSM);
    4545    if (RT_SUCCESS(vrc))
    4646    {
     
    113113        }
    114114
    115         SSMR3Close(pSSM);
     115        ssmStream.close();
    116116    }
    117117
     
    144144}
    145145
    146 int readSavedGuestScreenInfo(const Utf8Str &strStateFilePath, uint32_t u32ScreenId,
    147                              uint32_t *pu32OriginX, uint32_t *pu32OriginY,
     146int readSavedGuestScreenInfo(SsmStream &ssmStream, const Utf8Str &strStateFilePath,
     147                             uint32_t u32ScreenId, uint32_t *pu32OriginX, uint32_t *pu32OriginY,
    148148                             uint32_t *pu32Width, uint32_t *pu32Height, uint16_t *pu16Flags)
    149149{
     
    158158
    159159    PSSMHANDLE pSSM;
    160     int vrc = SSMR3Open(strStateFilePath.c_str(), NULL /*pStreamOps*/, NULL /*pvStreamOps*/,
    161                         0 /*fFlags*/, &pSSM);
     160    int vrc = ssmStream.open(strStateFilePath.c_str(), false /*fWrite*/, &pSSM);
    162161    if (RT_SUCCESS(vrc))
    163162    {
     
    208207        }
    209208
    210         SSMR3Close(pSSM);
     209        ssmStream.close();
    211210    }
    212211
  • trunk/src/VBox/Main/src-server/MachineImpl.cpp

    r94761 r94778  
    5151#include "ExtPackManagerImpl.h"
    5252#include "MachineLaunchVMCommonWorker.h"
     53#include "CryptoUtils.h"
    5354
    5455// generated header
     
    65246525    uint16_t u16Flags = 0;
    65256526
    6526     int vrc = readSavedGuestScreenInfo(mSSData->strStateFilePath, aScreenId,
     6527    SsmStream SavedStateStream(mParent, mData->mpKeyStore, mSSData->strStateKeyId, mSSData->strStateKeyStore);
     6528    int vrc = readSavedGuestScreenInfo(SavedStateStream, mSSData->strStateFilePath, aScreenId,
    65276529                                       &u32OriginX, &u32OriginY, &u32Width, &u32Height, &u16Flags);
    65286530    if (RT_FAILURE(vrc))
     
    65716573    uint32_t u32Height = 0;
    65726574
    6573     int vrc = readSavedDisplayScreenshot(mSSData->strStateFilePath, 0 /* u32Type */, &pu8Data, &cbData, &u32Width, &u32Height);
    6574 
     6575    SsmStream SavedStateStream(mParent, mData->mpKeyStore, mSSData->strStateKeyId, mSSData->strStateKeyStore);
     6576    int vrc = readSavedDisplayScreenshot(SavedStateStream, mSSData->strStateFilePath, 0 /* u32Type */,
     6577                                         &pu8Data, &cbData, &u32Width, &u32Height);
    65756578    if (RT_FAILURE(vrc))
    65766579        return setErrorBoth(VBOX_E_IPRT_ERROR, vrc,
     
    66606663    uint32_t u32Height = 0;
    66616664
    6662     int vrc = readSavedDisplayScreenshot(mSSData->strStateFilePath, 1 /* u32Type */, &pu8Data, &cbData, &u32Width, &u32Height);
     6665    SsmStream SavedStateStream(mParent, mData->mpKeyStore, mSSData->strStateKeyId, mSSData->strStateKeyStore);
     6666    int vrc = readSavedDisplayScreenshot(SavedStateStream, mSSData->strStateFilePath, 1 /* u32Type */,
     6667                                         &pu8Data, &cbData, &u32Width, &u32Height);
    66636668
    66646669    if (RT_FAILURE(vrc))
     
    66966701    uint32_t u32Height = 0;
    66976702
    6698     int vrc = readSavedDisplayScreenshot(mSSData->strStateFilePath, 1 /* u32Type */, &pu8Data, &cbData, &u32Width, &u32Height);
     6703    SsmStream SavedStateStream(mParent, mData->mpKeyStore, mSSData->strStateKeyId, mSSData->strStateKeyStore);
     6704    int vrc = readSavedDisplayScreenshot(SavedStateStream, mSSData->strStateFilePath, 1 /* u32Type */,
     6705                                         &pu8Data, &cbData, &u32Width, &u32Height);
    66996706
    67006707    if (RT_FAILURE(vrc))
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