1
0
mirror of https://github.com/veracrypt/VeraCrypt.git synced 2025-11-12 11:28:26 -06:00

Windows: code refactoring for handling of ESP files (DcsProp and PlatformInfo).

This commit is contained in:
Mounir IDRASSI
2017-06-11 01:27:38 +02:00
parent 374ba4c831
commit 4208b43581
3 changed files with 90 additions and 68 deletions

View File

@@ -11063,24 +11063,7 @@ static BOOL CALLBACK BootLoaderPreferencesDlgProc (HWND hwndDlg, UINT msg, WPARA
// read PlatformInfo file if it exists
try
{
ByteArray fileContent;
DWORD sz, offset;
std::wstring path;
GetVolumeESP(path);
path += L"\\EFI\\VeraCrypt\\PlatformInfo";
File fPlatformInfo(path);
fPlatformInfo.GetFileSize(sz);
fileContent.resize(sz + 1);
fileContent[sz] = 0;
fPlatformInfo.Read((byte*)&fileContent[0], sz);
// remove UTF-8 BOM if any
if (0 == memcmp (fileContent.data(), "\xEF\xBB\xBF", 3))
{
offset = 3;
}
else
offset = 0;
platforminfo = (const char*) &fileContent[offset];
platforminfo = ReadESPFile (L"\\EFI\\VeraCrypt\\PlatformInfo", true);
}
catch (Exception &e) {}
@@ -11130,38 +11113,13 @@ static BOOL CALLBACK BootLoaderPreferencesDlgProc (HWND hwndDlg, UINT msg, WPARA
{
try
{
std::string dcsprop;
ByteArray fileContent;
DWORD sz, offset;
std::wstring path;
GetVolumeESP(path);
path += L"\\EFI\\VeraCrypt\\DcsProp";
File f1(path);
f1.GetFileSize(sz);
fileContent.resize(sz + 1);
fileContent[sz] = 0;
f1.Read((byte*)&fileContent[0], sz);
f1.Close();
// remove UTF-8 BOM if any
if (0 == memcmp (fileContent.data(), "\xEF\xBB\xBF", 3))
{
offset = 3;
}
else
offset = 0;
std::string dcsprop = ReadESPFile (L"\\EFI\\VeraCrypt\\DcsProp", true);
dcsprop = (const char*) &fileContent[offset];
while (TextEditDialogBox(FALSE, hwndDlg, GetString ("BOOT_LOADER_CONFIGURATION_FILE"), dcsprop) == IDOK)
{
if (validateDcsPropXml (dcsprop.c_str()))
{
// Add UTF-8 BOM
fileContent.resize (dcsprop.length() + 3);
memcpy (fileContent.data(), "\xEF\xBB\xBF", 3);
memcpy (&fileContent[3], &dcsprop[0], dcsprop.length());
File f2(path,false,true);
f2.Write(fileContent.data(), fileContent.size());
f2.Close();
WriteESPFile (L"\\EFI\\VeraCrypt\\DcsProp", (LPBYTE) dcsprop.c_str(), (DWORD) dcsprop.size(), true);
break;
}
else