- Timestamp:
- Apr 27, 2022 7:41:12 AM (3 years ago)
- Location:
- trunk/src/VBox
- Files:
-
- 10 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Frontends/VBoxManage/VBoxManageList.cpp
r94643 r94714 834 834 systemProperties->COMGETTER(DefaultVRDEExtPack)(str.asOutParam()); 835 835 RTPrintf(List::tr("Remote desktop ExtPack: %ls\n"), str.raw()); 836 systemProperties->COMGETTER(DefaultCryptoExtPack)(str.asOutParam()); 837 RTPrintf(List::tr("VM encryption ExtPack: %ls\n"), str.raw()); 836 838 systemProperties->COMGETTER(LogHistoryCount)(&ulValue); 837 839 RTPrintf(List::tr("Log history count: %u\n"), ulValue); … … 1213 1215 Bstr bstrVrdeModule; 1214 1216 CHECK_ERROR2I_STMT(extPacks[i], COMGETTER(VRDEModule)(bstrVrdeModule.asOutParam()),hrc=hrcCheck; bstrVrdeModule.setNull()); 1217 Bstr bstrCryptoModule; 1218 CHECK_ERROR2I_STMT(extPacks[i], COMGETTER(CryptoModule)(bstrCryptoModule.asOutParam()),hrc=hrcCheck; bstrCryptoModule.setNull()); 1215 1219 BOOL fUsable; 1216 1220 CHECK_ERROR2I_STMT(extPacks[i], COMGETTER(Usable)(&fUsable), hrc = hrcCheck; fUsable = FALSE); … … 1223 1227 RTPrintf(List::tr( 1224 1228 "Pack no.%2zu: %ls\n" 1225 "Version: %ls\n" 1226 "Revision: %u\n" 1227 "Edition: %ls\n" 1228 "Description: %ls\n" 1229 "VRDE Module: %ls\n" 1230 "Usable: %RTbool\n" 1231 "Why unusable: %ls\n"), 1229 "Version: %ls\n" 1230 "Revision: %u\n" 1231 "Edition: %ls\n" 1232 "Description: %ls\n" 1233 "VRDE Module: %ls\n" 1234 "Crypto Module: %ls\n" 1235 "Usable: %RTbool\n" 1236 "Why unusable: %ls\n"), 1232 1237 i, bstrName.raw(), 1233 1238 bstrVersion.raw(), … … 1236 1241 bstrDesc.raw(), 1237 1242 bstrVrdeModule.raw(), 1243 bstrCryptoModule.raw(), 1238 1244 fUsable != FALSE, 1239 1245 bstrWhy.raw()); -
trunk/src/VBox/Main/idl/VirtualBox.xidl
r94704 r94714 12297 12297 name="ISystemProperties" 12298 12298 extends="$unknown" 12299 uuid=" e6bf9165-6685-4ebe-96cd-9c1b7ab7f776"12299 uuid="a2a3be3d-664a-47e9-a4c5-add220d4ebb1" 12300 12300 wsmap="managed" 12301 12301 rest="managed" … … 12562 12562 For details about VirtualBox Remote Desktop Extension and how to 12563 12563 implement one, please refer to the VirtualBox SDK. 12564 </desc> 12565 </attribute> 12566 12567 <attribute name="defaultCryptoExtPack" type="wstring"> 12568 <desc> 12569 The name of the extension pack providing the default cryptographic support 12570 for full VM encryption. 12571 12572 This attribute is for choosing between multiple extension packs 12573 providing cryptographic support. If only one is installed, it will automatically be the 12574 default one. The attribute value can be empty if no cryptographic extension 12575 pack is installed. 12564 12576 </desc> 12565 12577 </attribute> … … 25157 25169 <interface 25158 25170 name="IExtPackBase" extends="$unknown" 25159 uuid=" f25aca3d-0b79-4350-bdd9-a0376cd6e6e3"25171 uuid="aa204a12-5b29-45a5-b5d6-c2bafcdb9b0b" 25160 25172 wsmap="suppress" 25161 25173 reservedMethods="4" reservedAttributes="8" … … 25196 25208 <attribute name="VRDEModule" type="wstring" readonly="yes"> 25197 25209 <desc>The name of the VRDE module if the extension pack sports one.</desc> 25210 </attribute> 25211 <attribute name="CryptoModule" type="wstring" readonly="yes"> 25212 <desc> 25213 The name of the crypto module if the extension pack sports one. 25214 This module is required for full VM encryption. 25215 </desc> 25198 25216 </attribute> 25199 25217 <attribute name="plugIns" type="IExtPackPlugIn" safearray="yes" readonly="yes"> -
trunk/src/VBox/Main/include/ExtPackManagerImpl.h
r93449 r94714 67 67 HRESULT getEdition(com::Utf8Str &aEdition); 68 68 HRESULT getVRDEModule(com::Utf8Str &aVRDEModule); 69 HRESULT getCryptoModule(com::Utf8Str &aCryptoModule); 69 70 HRESULT getPlugIns(std::vector<ComPtr<IExtPackPlugIn> > &aPlugIns); 70 71 HRESULT getUsable(BOOL *aUsable); … … 131 132 #endif 132 133 HRESULT i_checkVrde(void); 134 HRESULT i_checkCrypto(void); 133 135 HRESULT i_getVrdpLibraryName(Utf8Str *a_pstrVrdeLibrary); 136 HRESULT i_getCryptoLibraryName(Utf8Str *a_pstrCryptoLibrary); 134 137 HRESULT i_getLibraryName(const char *a_pszModuleName, Utf8Str *a_pstrLibrary); 135 138 bool i_wantsToBeDefaultVrde(void) const; 139 bool i_wantsToBeDefaultCrypto(void) const; 136 140 HRESULT i_refresh(bool *pfCanDelete); 137 141 #ifndef VBOX_COM_INPROC … … 200 204 HRESULT getEdition(com::Utf8Str &aEdition); 201 205 HRESULT getVRDEModule(com::Utf8Str &aVRDEModule); 206 HRESULT getCryptoModule(com::Utf8Str &aCryptoModule); 202 207 HRESULT getPlugIns(std::vector<ComPtr<IExtPackPlugIn> > &aPlugIns); 203 208 HRESULT getUsable(BOOL *aUsable); … … 261 266 HRESULT i_checkVrdeExtPack(Utf8Str const *a_pstrExtPack); 262 267 int i_getVrdeLibraryPathForExtPack(Utf8Str const *a_pstrExtPack, Utf8Str *a_pstrVrdeLibrary); 268 HRESULT i_checkCryptoExtPack(Utf8Str const *a_pstrExtPack); 269 int i_getCryptoLibraryPathForExtPack(Utf8Str const *a_pstrExtPack, Utf8Str *a_pstrVrdeLibrary); 263 270 HRESULT i_getLibraryPathForExtPack(const char *a_pszModuleName, const char *a_pszExtPack, Utf8Str *a_pstrLibrary); 264 271 HRESULT i_getDefaultVrdeExtPack(Utf8Str *a_pstrExtPack); 272 HRESULT i_getDefaultCryptoExtPack(Utf8Str *a_pstrExtPack); 265 273 bool i_isExtPackUsable(const char *a_pszExtPack); 266 274 void i_dumpAllToReleaseLog(void); -
trunk/src/VBox/Main/include/ExtPackUtil.h
r93115 r94714 107 107 /** The name of the VRDE module, empty if none. */ 108 108 RTCString strVrdeModule; 109 /** The name of the cryptographic module, empty if none. */ 110 RTCString strCryptoModule; 109 111 /** The number of plug-in descriptors. */ 110 112 uint32_t cPlugIns; -
trunk/src/VBox/Main/include/Global.h
r93480 r94714 57 57 */ 58 58 #define VBOXVRDP_KLUDGE_EXTPACK_NAME "Built-in-VBoxVRDP" 59 60 /** The VBoxPuelCrypto kludge extension pack name. 61 * 62 * This is not a valid extension pack name (dashes are not allowed), and 63 * hence will not conflict with real extension packs. 64 */ 65 #define VBOXPUELCRYPTO_KLUDGE_EXTPACK_NAME "Built-in-VBoxPuelCrypto" 59 66 60 67 /** -
trunk/src/VBox/Main/include/SystemPropertiesImpl.h
r94643 r94714 101 101 HRESULT getDefaultVRDEExtPack(com::Utf8Str &aDefaultVRDEExtPack) RT_OVERRIDE; 102 102 HRESULT setDefaultVRDEExtPack(const com::Utf8Str &aDefaultVRDEExtPack) RT_OVERRIDE; 103 HRESULT getDefaultCryptoExtPack(com::Utf8Str &aDefaultCryptoExtPack) RT_OVERRIDE; 104 HRESULT setDefaultCryptoExtPack(const com::Utf8Str &aDefaultCryptoExtPack) RT_OVERRIDE; 103 105 HRESULT getLogHistoryCount(ULONG *aLogHistoryCount) RT_OVERRIDE; 104 106 HRESULT setLogHistoryCount(ULONG aLogHistoryCount) RT_OVERRIDE; … … 185 187 HRESULT i_setWebServiceAuthLibrary(const com::Utf8Str &aPath); 186 188 HRESULT i_setDefaultVRDEExtPack(const com::Utf8Str &aExtPack); 189 HRESULT i_setDefaultCryptoExtPack(const com::Utf8Str &aExtPack); 187 190 HRESULT i_setAutostartDatabasePath(const com::Utf8Str &aPath); 188 191 HRESULT i_setDefaultAdditionsISO(const com::Utf8Str &aPath); -
trunk/src/VBox/Main/src-all/ExtPackManagerImpl.cpp
r93449 r94714 481 481 { 482 482 aVRDEModule = m->Desc.strVrdeModule; 483 return S_OK; 484 } 485 486 HRESULT ExtPackFile::getCryptoModule(com::Utf8Str &aCryptoModule) 487 { 488 aCryptoModule = m->Desc.strCryptoModule; 483 489 return S_OK; 484 490 } … … 1156 1162 1157 1163 /** 1164 * Check if the extension pack is usable and has a cryptographic module. 1165 * 1166 * @returns S_OK or COM error status with error information. 1167 * 1168 * @remarks Caller holds the extension manager lock for reading, no locking 1169 * necessary. 1170 */ 1171 HRESULT ExtPack::i_checkCrypto(void) 1172 { 1173 HRESULT hrc; 1174 if ( m != NULL 1175 && m->fUsable) 1176 { 1177 if (m->Desc.strCryptoModule.isNotEmpty()) 1178 hrc = S_OK; 1179 else 1180 hrc = setError(E_FAIL, tr("The extension pack '%s' does not include a cryptographic module"), m->Desc.strName.c_str()); 1181 } 1182 else 1183 hrc = setError(E_FAIL, "%s", m->strWhyUnusable.c_str()); 1184 return hrc; 1185 } 1186 1187 /** 1158 1188 * Same as checkVrde(), except that it also resolves the path to the module. 1159 1189 * … … 1175 1205 hrc = setError(E_FAIL, tr("Failed to locate the VRDE module '%s' in extension pack '%s'"), 1176 1206 m->Desc.strVrdeModule.c_str(), m->Desc.strName.c_str()); 1207 } 1208 return hrc; 1209 } 1210 1211 /** 1212 * Same as i_checkCrypto(), except that it also resolves the path to the module. 1213 * 1214 * @returns S_OK or COM error status with error information. 1215 * @param a_pstrCryptoLibrary Where to return the path on success. 1216 * 1217 * @remarks Caller holds the extension manager lock for reading, no locking 1218 * necessary. 1219 */ 1220 HRESULT ExtPack::i_getCryptoLibraryName(Utf8Str *a_pstrCryptoLibrary) 1221 { 1222 HRESULT hrc = i_checkCrypto(); 1223 if (SUCCEEDED(hrc)) 1224 { 1225 if (i_findModule(m->Desc.strCryptoModule.c_str(), NULL, VBOXEXTPACKMODKIND_R3, 1226 a_pstrCryptoLibrary, NULL /*a_pfNative*/, NULL /*a_pObjInfo*/)) 1227 hrc = S_OK; 1228 else 1229 hrc = setError(E_FAIL, tr("Failed to locate the cryptographic module '%s' in extension pack '%s'"), 1230 m->Desc.strCryptoModule.c_str(), m->Desc.strName.c_str()); 1177 1231 } 1178 1232 return hrc; … … 1214 1268 return m->fUsable 1215 1269 && m->Desc.strVrdeModule.isNotEmpty(); 1270 } 1271 1272 /** 1273 * Check if this extension pack wishes to be the default cryptographic provider. 1274 * 1275 * @returns @c true if it wants to and it is in a usable state, otherwise 1276 * @c false. 1277 * 1278 * @remarks Caller holds the extension manager lock for reading, no locking 1279 * necessary. 1280 */ 1281 bool ExtPack::i_wantsToBeDefaultCrypto(void) const 1282 { 1283 return m->fUsable 1284 && m->Desc.strCryptoModule.isNotEmpty(); 1216 1285 } 1217 1286 … … 2097 2166 { 2098 2167 aVRDEModule = m->Desc.strVrdeModule; 2168 return S_OK; 2169 } 2170 2171 HRESULT ExtPack::getCryptoModule(com::Utf8Str &aCryptoModule) 2172 { 2173 aCryptoModule = m->Desc.strCryptoModule; 2099 2174 return S_OK; 2100 2175 } … … 3509 3584 3510 3585 /** 3586 * Checks that the specified extension pack contains a cryptographic module and that it 3587 * is shipshape. 3588 * 3589 * @returns S_OK if ok, appropriate failure status code with details. 3590 * @param a_pstrExtPack The name of the extension pack. 3591 */ 3592 HRESULT ExtPackManager::i_checkCryptoExtPack(Utf8Str const *a_pstrExtPack) 3593 { 3594 AutoCaller autoCaller(this); 3595 HRESULT hrc = autoCaller.rc(); 3596 if (SUCCEEDED(hrc)) 3597 { 3598 AutoReadLock autoLock(this COMMA_LOCKVAL_SRC_POS); 3599 3600 ExtPack *pExtPack = i_findExtPack(a_pstrExtPack->c_str()); 3601 if (pExtPack) 3602 hrc = pExtPack->i_checkCrypto(); 3603 else 3604 hrc = setError(VBOX_E_OBJECT_NOT_FOUND, tr("No extension pack by the name '%s' was found"), a_pstrExtPack->c_str()); 3605 } 3606 3607 return hrc; 3608 } 3609 3610 /** 3611 * Gets the full path to the cryptographic library of the specified extension pack. 3612 * 3613 * This will do extacly the same as checkCryptoExtPack and then resolve the 3614 * library path. 3615 * 3616 * @returns VINF_SUCCESS if a path is returned, VBox error status and message 3617 * return if not. 3618 * @param a_pstrExtPack The extension pack. 3619 * @param a_pstrCryptoLibrary Where to return the path. 3620 */ 3621 int ExtPackManager::i_getCryptoLibraryPathForExtPack(Utf8Str const *a_pstrExtPack, Utf8Str *a_pstrCryptoLibrary) 3622 { 3623 AutoCaller autoCaller(this); 3624 HRESULT hrc = autoCaller.rc(); 3625 if (SUCCEEDED(hrc)) 3626 { 3627 AutoReadLock autoLock(this COMMA_LOCKVAL_SRC_POS); 3628 3629 ExtPack *pExtPack = i_findExtPack(a_pstrExtPack->c_str()); 3630 if (pExtPack) 3631 hrc = pExtPack->i_getCryptoLibraryName(a_pstrCryptoLibrary); 3632 else 3633 hrc = setError(VBOX_E_OBJECT_NOT_FOUND, tr("No extension pack by the name '%s' was found"), 3634 a_pstrExtPack->c_str()); 3635 } 3636 3637 return Global::vboxStatusCodeFromCOM(hrc); 3638 } 3639 3640 3641 /** 3511 3642 * Gets the full path to the specified library of the specified extension pack. 3512 3643 * … … 3568 3699 3569 3700 /** 3701 * Gets the name of the default cryptographic extension pack. 3702 * 3703 * @returns S_OK or some COM error status on red tape failure. 3704 * @param a_pstrExtPack Where to return the extension pack name. Returns 3705 * empty if no extension pack wishes to be the default 3706 * VRDP provider. 3707 */ 3708 HRESULT ExtPackManager::i_getDefaultCryptoExtPack(Utf8Str *a_pstrExtPack) 3709 { 3710 a_pstrExtPack->setNull(); 3711 3712 AutoCaller autoCaller(this); 3713 HRESULT hrc = autoCaller.rc(); 3714 if (SUCCEEDED(hrc)) 3715 { 3716 AutoReadLock autoLock(this COMMA_LOCKVAL_SRC_POS); 3717 3718 for (ExtPackList::iterator it = m->llInstalledExtPacks.begin(); 3719 it != m->llInstalledExtPacks.end(); 3720 ++it) 3721 { 3722 if ((*it)->i_wantsToBeDefaultCrypto()) 3723 { 3724 *a_pstrExtPack = (*it)->m->Desc.strName; 3725 break; 3726 } 3727 } 3728 } 3729 return hrc; 3730 } 3731 3732 /** 3570 3733 * Checks if an extension pack is (present and) usable. 3571 3734 * … … 3606 3769 { 3607 3770 if (pExtPackData->fUsable) 3608 LogRel((" %s (Version: %s r%u%s%s; VRDE Module: %s)\n", 3609 pExtPackData->Desc.strName.c_str(), 3610 pExtPackData->Desc.strVersion.c_str(), 3611 pExtPackData->Desc.uRevision, 3612 pExtPackData->Desc.strEdition.isEmpty() ? "" : " ", 3613 pExtPackData->Desc.strEdition.c_str(), 3614 pExtPackData->Desc.strVrdeModule.c_str() )); 3615 else 3616 LogRel((" %s (Version: %s r%u%s%s; VRDE Module: %s unusable because of '%s')\n", 3771 LogRel((" %s (Version: %s r%u%s%s; VRDE Module: %s; Crypto Module: %s)\n", 3617 3772 pExtPackData->Desc.strName.c_str(), 3618 3773 pExtPackData->Desc.strVersion.c_str(), … … 3621 3776 pExtPackData->Desc.strEdition.c_str(), 3622 3777 pExtPackData->Desc.strVrdeModule.c_str(), 3778 pExtPackData->Desc.strCryptoModule.c_str() )); 3779 else 3780 LogRel((" %s (Version: %s r%u%s%s; VRDE Module: %s; Crypto Module: %s unusable because of '%s')\n", 3781 pExtPackData->Desc.strName.c_str(), 3782 pExtPackData->Desc.strVersion.c_str(), 3783 pExtPackData->Desc.uRevision, 3784 pExtPackData->Desc.strEdition.isEmpty() ? "" : " ", 3785 pExtPackData->Desc.strEdition.c_str(), 3786 pExtPackData->Desc.strVrdeModule.c_str(), 3787 pExtPackData->Desc.strCryptoModule.c_str(), 3623 3788 pExtPackData->strWhyUnusable.c_str() )); 3624 3789 } -
trunk/src/VBox/Main/src-all/ExtPackUtil.cpp
r93115 r94714 90 90 a_pExtPackDesc->strMainVMModule.setNull(); 91 91 a_pExtPackDesc->strVrdeModule.setNull(); 92 a_pExtPackDesc->strCryptoModule.setNull(); 92 93 a_pExtPackDesc->cPlugIns = 0; 93 94 a_pExtPackDesc->paPlugIns = NULL; … … 210 211 211 212 /* 213 * The cryptographic module, optional. 214 * Accept both none and empty as tokens of no cryptographic module. 215 */ 216 const char *pszCryptoModule = NULL; 217 const xml::ElementNode *pCryptoModuleElm = pVBoxExtPackElm->findChildElement("CryptoModule"); 218 if (pCryptoModuleElm) 219 { 220 pszCryptoModule = pCryptoModuleElm->getValueN(RT_XML_CONTENT_SMALL); 221 if (!pszCryptoModule || *pszCryptoModule == '\0') 222 pszCryptoModule = NULL; 223 else if (!VBoxExtPackIsValidModuleString(pszCryptoModule)) 224 return &(new RTCString(ExtPackUtil::tr("Invalid cryptographic module string: ")))->append(pszCryptoModule); 225 } 226 227 /* 212 228 * Whether to show the license, optional. (presense is enough here) 213 229 */ … … 238 254 a_pExtPackDesc->strMainVMModule = pszMainVMModule; 239 255 a_pExtPackDesc->strVrdeModule = pszVrdeModule; 256 a_pExtPackDesc->strCryptoModule = pszCryptoModule; 240 257 a_pExtPackDesc->cPlugIns = cPlugIns; 241 258 a_pExtPackDesc->paPlugIns = paPlugIns; … … 411 428 a_pExtPackDesc->strMainVMModule.setNull(); 412 429 a_pExtPackDesc->strVrdeModule.setNull(); 430 a_pExtPackDesc->strCryptoModule.setNull(); 413 431 a_pExtPackDesc->cPlugIns = 0; 414 432 RTMemFree(a_pExtPackDesc->paPlugIns); -
trunk/src/VBox/Main/src-server/SystemPropertiesImpl.cpp
r94643 r94714 103 103 i_setVRDEAuthLibrary(Utf8Str::Empty); 104 104 i_setDefaultVRDEExtPack(Utf8Str::Empty); 105 i_setDefaultCryptoExtPack(Utf8Str::Empty); 105 106 106 107 m->uLogHistoryCount = 3; … … 1157 1158 1158 1159 1160 HRESULT SystemProperties::getDefaultCryptoExtPack(com::Utf8Str &aExtPack) 1161 { 1162 HRESULT hrc = S_OK; 1163 AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS); 1164 Utf8Str strExtPack(m->strDefaultCryptoExtPack); 1165 if (strExtPack.isNotEmpty()) 1166 { 1167 if (strExtPack.equals(VBOXPUELCRYPTO_KLUDGE_EXTPACK_NAME)) 1168 hrc = S_OK; 1169 else 1170 #ifdef VBOX_WITH_EXTPACK 1171 hrc = mParent->i_getExtPackManager()->i_checkCryptoExtPack(&strExtPack); 1172 #else 1173 hrc = setError(E_FAIL, tr("The extension pack '%s' does not exist"), strExtPack.c_str()); 1174 #endif 1175 } 1176 else 1177 { 1178 #ifdef VBOX_WITH_EXTPACK 1179 hrc = mParent->i_getExtPackManager()->i_getDefaultCryptoExtPack(&strExtPack); 1180 #endif 1181 if (strExtPack.isEmpty()) 1182 { 1183 /* 1184 * Klugde - check if VBoxPuelCrypto.dll/.so/.dylib is installed. 1185 * This is hardcoded uglyness, sorry. 1186 */ 1187 char szPath[RTPATH_MAX]; 1188 int vrc = RTPathAppPrivateArch(szPath, sizeof(szPath)); 1189 if (RT_SUCCESS(vrc)) 1190 vrc = RTPathAppend(szPath, sizeof(szPath), "VBoxPuelCrypto"); 1191 if (RT_SUCCESS(vrc)) 1192 vrc = RTStrCat(szPath, sizeof(szPath), RTLdrGetSuff()); 1193 if (RT_SUCCESS(vrc) && RTFileExists(szPath)) 1194 { 1195 /* Illegal extpack name, so no conflict. */ 1196 strExtPack = VBOXPUELCRYPTO_KLUDGE_EXTPACK_NAME; 1197 } 1198 } 1199 } 1200 1201 if (SUCCEEDED(hrc)) 1202 aExtPack = strExtPack; 1203 1204 return S_OK; 1205 } 1206 1207 1208 HRESULT SystemProperties::setDefaultCryptoExtPack(const com::Utf8Str &aExtPack) 1209 { 1210 HRESULT hrc = S_OK; 1211 if (aExtPack.isNotEmpty()) 1212 { 1213 if (aExtPack.equals(VBOXPUELCRYPTO_KLUDGE_EXTPACK_NAME)) 1214 hrc = S_OK; 1215 else 1216 #ifdef VBOX_WITH_EXTPACK 1217 hrc = mParent->i_getExtPackManager()->i_checkCryptoExtPack(&aExtPack); 1218 #else 1219 hrc = setError(E_FAIL, tr("The extension pack '%s' does not exist"), aExtPack.c_str()); 1220 #endif 1221 } 1222 if (SUCCEEDED(hrc)) 1223 { 1224 AutoWriteLock alock(this COMMA_LOCKVAL_SRC_POS); 1225 hrc = i_setDefaultCryptoExtPack(aExtPack); 1226 if (SUCCEEDED(hrc)) 1227 { 1228 /* VirtualBox::i_saveSettings() needs the VirtualBox write lock. */ 1229 alock.release(); 1230 AutoWriteLock vboxLock(mParent COMMA_LOCKVAL_SRC_POS); 1231 hrc = mParent->i_saveSettings(); 1232 } 1233 } 1234 1235 return hrc; 1236 } 1237 1238 1159 1239 HRESULT SystemProperties::getLogHistoryCount(ULONG *count) 1160 1240 { … … 1853 1933 if (FAILED(rc)) return rc; 1854 1934 1935 rc = i_setDefaultCryptoExtPack(data.strDefaultCryptoExtPack); 1936 if (FAILED(rc)) return rc; 1937 1855 1938 m->uLogHistoryCount = data.uLogHistoryCount; 1856 1939 m->fExclusiveHwVirt = data.fExclusiveHwVirt; … … 2118 2201 { 2119 2202 m->strDefaultVRDEExtPack = aExtPack; 2203 2204 return S_OK; 2205 } 2206 2207 HRESULT SystemProperties::i_setDefaultCryptoExtPack(const com::Utf8Str &aExtPack) 2208 { 2209 m->strDefaultCryptoExtPack = aExtPack; 2120 2210 2121 2211 return S_OK; -
trunk/src/VBox/Main/xml/Settings.cpp
r94685 r94714 2332 2332 pelmGlobalChild->getAttributeValue("webServiceAuthLibrary", systemProperties.strWebServiceAuthLibrary); 2333 2333 pelmGlobalChild->getAttributeValue("defaultVRDEExtPack", systemProperties.strDefaultVRDEExtPack); 2334 pelmGlobalChild->getAttributeValue("defaultCryptoExtPack", systemProperties.strDefaultCryptoExtPack); 2334 2335 pelmGlobalChild->getAttributeValue("LogHistoryCount", systemProperties.uLogHistoryCount); 2335 2336 pelmGlobalChild->getAttributeValue("autostartDatabasePath", systemProperties.strAutostartDatabasePath); … … 2628 2629 if (systemProperties.strDefaultVRDEExtPack.length()) 2629 2630 pelmSysProps->setAttribute("defaultVRDEExtPack", systemProperties.strDefaultVRDEExtPack); 2631 if (systemProperties.strDefaultCryptoExtPack.length()) 2632 pelmSysProps->setAttribute("defaultCryptoExtPack", systemProperties.strDefaultCryptoExtPack); 2630 2633 pelmSysProps->setAttribute("LogHistoryCount", systemProperties.uLogHistoryCount); 2631 2634 if (systemProperties.strAutostartDatabasePath.length())
Note:
See TracChangeset
for help on using the changeset viewer.