VeraCrypt
aboutsummaryrefslogtreecommitdiff
path: root/src/ExpandVolume/ExpandVolume.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/ExpandVolume/ExpandVolume.c')
-rw-r--r--src/ExpandVolume/ExpandVolume.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/ExpandVolume/ExpandVolume.c b/src/ExpandVolume/ExpandVolume.c
index 84f6cfe8..f62d93ae 100644
--- a/src/ExpandVolume/ExpandVolume.c
+++ b/src/ExpandVolume/ExpandVolume.c
@@ -410,70 +410,76 @@ int ExtendFileSystem (HWND hwndDlg , wchar_t *lpszVolume, Password *pVolumePassw
nStatus = ERR_SUCCESS;
goto error;
}
nStatus = ERR_OS_ERROR;
goto error;
}
if (fs != EV_FS_TYPE_RAW && fs != EV_FS_TYPE_NTFS )
{
// FsctlExtendVolume only supports NTFS and RAW -> return with no error
nStatus = ERR_SUCCESS;
goto error;
}
// Get volume GUID
if (!GetVolumeNameForVolumeMountPoint(rootPath,szVolumeGUID,ARRAYSIZE(szVolumeGUID)))
{
nStatus = ERR_OS_ERROR;
goto error;
}
else
{
// strip trailing backslash from volume GUID (otherwise it means root dir)
size_t len = wcslen(szVolumeGUID);
if (len>0) --len;
if (szVolumeGUID[len]==L'\\') szVolumeGUID[len]=0;
}
// Get Sector Size
if ( !GetNtfsNumberOfSectors(rootPath, NULL, &BytesPerSector) )
{
nStatus = ERR_OS_ERROR;
goto error;
}
+ if ((BytesPerSector == 0) || (BytesPerSector > (DWORD)INT_MAX))
+ {
+ nStatus = ERR_SECTOR_SIZE_INCOMPATIBLE;
+ goto error;
+ }
+
DebugAddProgressDlgStatus (hwndDlg, L"Extending file system ...\r\n");
// extend volume
nStatus = FsctlExtendVolume(szVolumeGUID, newDataAreaSize/BytesPerSector );
error:
dwError = GetLastError();
if (driveNo>=0)
{
DebugAddProgressDlgStatus (hwndDlg, L"Unmounting volume ...\r\n");
UnmountVolume (hwndDlg, driveNo, TRUE);
}
SetLastError (dwError);
return nStatus;
}
/*
ExpandVolume
Sets the volume size in the volume header (and backup header) to a larger value,
and resizes the filesystem within the volume (only NTFS supported)
Parameters:
hwndDlg : HWND
[in] handle to progress dialog
lpszVolume : char *
[in] Pointer to a string that contains the path to the truecrypt volume
pVolumePassword : Password *