VeraCrypt
aboutsummaryrefslogtreecommitdiff
path: root/DcsCfg/DcsCfgCrypt.c
diff options
context:
space:
mode:
authorkavsrf <kavsrf@gmail.com>2017-02-05 17:31:28 +0300
committerMounir IDRASSI <mounir.idrassi@idrix.fr>2017-06-05 17:36:54 +0200
commitabf3adcd2f37f4e278fc9ef7634ca0c8f5171893 (patch)
treec7fe7706e8648c7a989bcfd30dbc66a1faa108f3 /DcsCfg/DcsCfgCrypt.c
parentd200f27ac3b8a4f58e52a5ee798e11e3fdf74924 (diff)
downloadVeraCrypt-DCS-abf3adcd2f37f4e278fc9ef7634ca0c8f5171893.tar.gz
VeraCrypt-DCS-abf3adcd2f37f4e278fc9ef7634ca0c8f5171893.zip
picture password bmp and DcsProp can be in secregion on separate flash
Tables overlay configuration commands
Diffstat (limited to 'DcsCfg/DcsCfgCrypt.c')
-rw-r--r--DcsCfg/DcsCfgCrypt.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/DcsCfg/DcsCfgCrypt.c b/DcsCfg/DcsCfgCrypt.c
index 45523dd..94f8768 100644
--- a/DcsCfg/DcsCfgCrypt.c
+++ b/DcsCfg/DcsCfgCrypt.c
@@ -1380,6 +1380,8 @@ SecRigionAdd(
EFI_BLOCK_IO_PROTOCOL* bio;
UINT8* regionData;
UINTN regionSize;
+ UINT8* padding = NULL;
+ UINTN paddingSize = 0;
INTN deListHdrIdOk;
res = FileLoad(NULL, (CHAR16*)DcsDiskEntrysFileName, &regionData, &regionSize);
if (EFI_ERROR(res)) {
@@ -1400,9 +1402,18 @@ SecRigionAdd(
res = EFI_ACCESS_DENIED;
goto error;
}
-
+ paddingSize = regionSize & 0x01FF;
+ regionSize -= paddingSize;
res = bio->WriteBlocks(bio, bio->Media->MediaId, 62 + regIdx * (128 * 1024 / 512), regionSize, regionData);
+ if (!EFI_ERROR(res) &&
+ paddingSize != 0) {
+ padding = MEM_ALLOC(512);
+ CopyMem(padding, regionData + regionSize, paddingSize);
+ res = bio->WriteBlocks(bio, bio->Media->MediaId, 62 + regIdx * ((128 * 1024 ) / 512) + regionSize / 512, 512, padding);
+ MEM_FREE(padding);
+ }
+
if (EFI_ERROR(res)) {
ERR_PRINT(L"Write: %r\n", res);
goto error;