VeraCrypt
aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/Format/Tcformat.c18
1 files changed, 17 insertions, 1 deletions
diff --git a/src/Format/Tcformat.c b/src/Format/Tcformat.c
index 69118669..c9860968 100644
--- a/src/Format/Tcformat.c
+++ b/src/Format/Tcformat.c
@@ -5633,8 +5633,24 @@ BOOL CALLBACK PageDialogProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPa
if (hw == CBN_EDITCHANGE && nCurPageNo == VOLUME_LOCATION_PAGE)
{
+ BOOL bValidEntry = (GetWindowTextLength (GetDlgItem (hCurPage, IDC_COMBO_BOX)) > 0)? TRUE : FALSE;
+
+ if (bValidEntry && !bDevice)
+ {
+ /* check that the entered path is not for an existing directory */
+ WCHAR szEnteredFilePath[TC_MAX_PATH + 1] = {0};
+ GetWindowTextW (GetDlgItem (hCurPage, IDC_COMBO_BOX), szEnteredFilePath, ARRAYSIZE (szEnteredFilePath));
+ RelativePath2Absolute (szEnteredFilePath);
+
+ DWORD dwAttr = GetFileAttributes (szEnteredFilePath);
+ if ((dwAttr != INVALID_FILE_ATTRIBUTES) && (dwAttr & FILE_ATTRIBUTE_DIRECTORY))
+ {
+ /* this is a directory. Consider it as invalid */
+ bValidEntry = FALSE;
+ }
+ }
EnableWindow (GetDlgItem (GetParent (hwndDlg), IDC_NEXT),
- GetWindowTextLength (GetDlgItem (hCurPage, IDC_COMBO_BOX)) > 0);
+ bValidEntry);
bDeviceTransformModeChoiceMade = FALSE;
bInPlaceEncNonSys = FALSE;