diff options
Diffstat (limited to 'src/Mount/Mount.c')
-rw-r--r-- | src/Mount/Mount.c | 290 |
1 files changed, 160 insertions, 130 deletions
diff --git a/src/Mount/Mount.c b/src/Mount/Mount.c index 5f6e472e..c63d31eb 100644 --- a/src/Mount/Mount.c +++ b/src/Mount/Mount.c | |||
@@ -46,6 +46,8 @@ | |||
46 | #include "../Platform/Finally.h" | 46 | #include "../Platform/Finally.h" |
47 | #include "../Platform/ForEach.h" | 47 | #include "../Platform/ForEach.h" |
48 | 48 | ||
49 | #include <Strsafe.h> | ||
50 | |||
49 | using namespace VeraCrypt; | 51 | using namespace VeraCrypt; |
50 | 52 | ||
51 | enum timer_ids | 53 | enum timer_ids |
@@ -534,7 +536,7 @@ void SaveSettings (HWND hwndDlg) | |||
534 | // Drive Letter | 536 | // Drive Letter |
535 | lLetter = GetSelectedLong (GetDlgItem (hwndDlg, IDC_DRIVELIST)); | 537 | lLetter = GetSelectedLong (GetDlgItem (hwndDlg, IDC_DRIVELIST)); |
536 | if (LOWORD (lLetter) != 0xffff) | 538 | if (LOWORD (lLetter) != 0xffff) |
537 | sprintf (szTmp, "%c:", (char) HIWORD (lLetter)); | 539 | StringCbPrintfA (szTmp, sizeof(szTmp), "%c:", (char) HIWORD (lLetter)); |
538 | ConfigWriteString ("LastSelectedDrive", szTmp); | 540 | ConfigWriteString ("LastSelectedDrive", szTmp); |
539 | 541 | ||
540 | ConfigWriteInt ("CloseSecurityTokenSessionsAfterMount", CloseSecurityTokenSessionsAfterMount); | 542 | ConfigWriteInt ("CloseSecurityTokenSessionsAfterMount", CloseSecurityTokenSessionsAfterMount); |
@@ -721,19 +723,19 @@ static void PopulateSysEncContextMenu (HMENU popup, BOOL bToolsOnly) | |||
721 | AppendMenuW (popup, MF_STRING, IDM_PERMANENTLY_DECRYPT_SYS, GetString ("PERMANENTLY_DECRYPT")); | 723 | AppendMenuW (popup, MF_STRING, IDM_PERMANENTLY_DECRYPT_SYS, GetString ("PERMANENTLY_DECRYPT")); |
722 | 724 | ||
723 | AppendMenuW (popup, MF_STRING, IDM_ENCRYPT_SYSTEM_DEVICE, GetString ("ENCRYPT")); | 725 | AppendMenuW (popup, MF_STRING, IDM_ENCRYPT_SYSTEM_DEVICE, GetString ("ENCRYPT")); |
724 | AppendMenu (popup, MF_SEPARATOR, 0, NULL); | 726 | AppendMenu (popup, MF_SEPARATOR, 0, ""); |
725 | } | 727 | } |
726 | } | 728 | } |
727 | 729 | ||
728 | AppendMenuW (popup, MF_STRING, IDM_CHANGE_SYS_PASSWORD, GetString ("IDM_CHANGE_SYS_PASSWORD")); | 730 | AppendMenuW (popup, MF_STRING, IDM_CHANGE_SYS_PASSWORD, GetString ("IDM_CHANGE_SYS_PASSWORD")); |
729 | AppendMenuW (popup, MF_STRING, IDM_CHANGE_SYS_HEADER_KEY_DERIV_ALGO, GetString ("IDM_CHANGE_SYS_HEADER_KEY_DERIV_ALGO")); | 731 | AppendMenuW (popup, MF_STRING, IDM_CHANGE_SYS_HEADER_KEY_DERIV_ALGO, GetString ("IDM_CHANGE_SYS_HEADER_KEY_DERIV_ALGO")); |
730 | 732 | ||
731 | AppendMenu (popup, MF_SEPARATOR, 0, NULL); | 733 | AppendMenu (popup, MF_SEPARATOR, 0, ""); |
732 | AppendMenuW (popup, MF_STRING, IDM_SYS_ENC_SETTINGS, GetString ("IDM_SYS_ENC_SETTINGS")); | 734 | AppendMenuW (popup, MF_STRING, IDM_SYS_ENC_SETTINGS, GetString ("IDM_SYS_ENC_SETTINGS")); |
733 | 735 | ||
734 | if (!IsHiddenOSRunning()) | 736 | if (!IsHiddenOSRunning()) |
735 | { | 737 | { |
736 | AppendMenu (popup, MF_SEPARATOR, 0, NULL); | 738 | AppendMenu (popup, MF_SEPARATOR, 0, ""); |
737 | AppendMenuW (popup, MF_STRING, IDM_CREATE_RESCUE_DISK, GetString ("IDM_CREATE_RESCUE_DISK")); | 739 | AppendMenuW (popup, MF_STRING, IDM_CREATE_RESCUE_DISK, GetString ("IDM_CREATE_RESCUE_DISK")); |
738 | AppendMenuW (popup, MF_STRING, IDM_VERIFY_RESCUE_DISK, GetString ("IDM_VERIFY_RESCUE_DISK")); | 740 | AppendMenuW (popup, MF_STRING, IDM_VERIFY_RESCUE_DISK, GetString ("IDM_VERIFY_RESCUE_DISK")); |
739 | } | 741 | } |
@@ -742,10 +744,10 @@ static void PopulateSysEncContextMenu (HMENU popup, BOOL bToolsOnly) | |||
742 | { | 744 | { |
743 | if (SysDriveOrPartitionFullyEncrypted (FALSE) && !IsHiddenOSRunning()) | 745 | if (SysDriveOrPartitionFullyEncrypted (FALSE) && !IsHiddenOSRunning()) |
744 | { | 746 | { |
745 | AppendMenu (popup, MF_SEPARATOR, 0, NULL); | 747 | AppendMenu (popup, MF_SEPARATOR, 0, ""); |
746 | AppendMenuW (popup, MF_STRING, IDM_PERMANENTLY_DECRYPT_SYS, GetString ("PERMANENTLY_DECRYPT")); | 748 | AppendMenuW (popup, MF_STRING, IDM_PERMANENTLY_DECRYPT_SYS, GetString ("PERMANENTLY_DECRYPT")); |
747 | } | 749 | } |
748 | AppendMenu (popup, MF_SEPARATOR, 0, NULL); | 750 | AppendMenu (popup, MF_SEPARATOR, 0, ""); |
749 | AppendMenuW (popup, MF_STRING, IDM_VOLUME_PROPERTIES, GetString ("IDPM_PROPERTIES")); | 751 | AppendMenuW (popup, MF_STRING, IDM_VOLUME_PROPERTIES, GetString ("IDPM_PROPERTIES")); |
750 | } | 752 | } |
751 | } | 753 | } |
@@ -764,7 +766,7 @@ BOOL CheckSysEncMountWithoutPBA (const char *devicePath, BOOL quiet) | |||
764 | if (strlen (devicePath) < 2) | 766 | if (strlen (devicePath) < 2) |
765 | { | 767 | { |
766 | GetWindowText (GetDlgItem (MainDlg, IDC_VOLUME), szDevicePath, sizeof (szDevicePath)); | 768 | GetWindowText (GetDlgItem (MainDlg, IDC_VOLUME), szDevicePath, sizeof (szDevicePath)); |
767 | CreateFullVolumePath (szDiskFile, szDevicePath, &tmpbDevice); | 769 | CreateFullVolumePath (szDiskFile, sizeof(szDiskFile), szDevicePath, &tmpbDevice); |
768 | 770 | ||
769 | if (!tmpbDevice) | 771 | if (!tmpbDevice) |
770 | { | 772 | { |
@@ -783,7 +785,7 @@ BOOL CheckSysEncMountWithoutPBA (const char *devicePath, BOOL quiet) | |||
783 | } | 785 | } |
784 | } | 786 | } |
785 | else | 787 | else |
786 | strncpy (szDevicePath, devicePath, sizeof (szDevicePath) - 1); | 788 | StringCbCopyA (szDevicePath, sizeof(szDevicePath), devicePath); |
787 | 789 | ||
788 | char *partionPortion = strrchr (szDevicePath, '\\'); | 790 | char *partionPortion = strrchr (szDevicePath, '\\'); |
789 | 791 | ||
@@ -815,7 +817,7 @@ BOOL CheckSysEncMountWithoutPBA (const char *devicePath, BOOL quiet) | |||
815 | return FALSE; | 817 | return FALSE; |
816 | } | 818 | } |
817 | 819 | ||
818 | _snprintf (parentDrivePath, | 820 | StringCbPrintfA (parentDrivePath, |
819 | sizeof (parentDrivePath), | 821 | sizeof (parentDrivePath), |
820 | "\\Device\\Harddisk%d\\Partition0", | 822 | "\\Device\\Harddisk%d\\Partition0", |
821 | driveNo); | 823 | driveNo); |
@@ -872,7 +874,7 @@ BOOL TCBootLoaderOnInactiveSysEncDrive (void) | |||
872 | if (sscanf (szDevicePath, "\\Device\\Harddisk%d\\Partition", &driveNo) != 1) | 874 | if (sscanf (szDevicePath, "\\Device\\Harddisk%d\\Partition", &driveNo) != 1) |
873 | return FALSE; | 875 | return FALSE; |
874 | 876 | ||
875 | _snprintf (parentDrivePath, | 877 | StringCbPrintfA (parentDrivePath, |
876 | sizeof (parentDrivePath), | 878 | sizeof (parentDrivePath), |
877 | "\\Device\\Harddisk%d\\Partition0", | 879 | "\\Device\\Harddisk%d\\Partition0", |
878 | driveNo); | 880 | driveNo); |
@@ -949,15 +951,16 @@ static void LaunchVolCreationWizard (HWND hwndDlg, const char *arg) | |||
949 | PROCESS_INFORMATION pi; | 951 | PROCESS_INFORMATION pi; |
950 | ZeroMemory (&si, sizeof (si)); | 952 | ZeroMemory (&si, sizeof (si)); |
951 | 953 | ||
952 | strcpy (++tmp, "VeraCrypt Format.exe\""); | 954 | *tmp = 0; |
955 | StringCbCopyA (t, sizeof(t), "\\VeraCrypt Format.exe\""); | ||
953 | 956 | ||
954 | if (!FileExists(t)) | 957 | if (!FileExists(t)) |
955 | Error ("VOL_CREATION_WIZARD_NOT_FOUND"); // Display a user-friendly error message and advise what to do | 958 | Error ("VOL_CREATION_WIZARD_NOT_FOUND"); // Display a user-friendly error message and advise what to do |
956 | 959 | ||
957 | if (strlen (arg) > 0) | 960 | if (strlen (arg) > 0) |
958 | { | 961 | { |
959 | strcat (t, " "); | 962 | StringCbCatA (t, sizeof(t), " "); |
960 | strcat (t, arg); | 963 | StringCbCatA (t, sizeof(t), arg); |
961 | } | 964 | } |
962 | 965 | ||
963 | if (!CreateProcess (NULL, (LPSTR) t, NULL, NULL, FALSE, NORMAL_PRIORITY_CLASS, NULL, NULL, &si, &pi)) | 966 | if (!CreateProcess (NULL, (LPSTR) t, NULL, NULL, FALSE, NORMAL_PRIORITY_CLASS, NULL, NULL, &si, &pi)) |
@@ -1068,7 +1071,8 @@ void LoadDriveLetters (HWND hTree, int drive) | |||
1068 | listItem.iItem = item++; | 1071 | listItem.iItem = item++; |
1069 | 1072 | ||
1070 | listItem.pszText = szTmp; | 1073 | listItem.pszText = szTmp; |
1071 | strcpy (szTmp, " "); | 1074 | szTmp[0] = ' '; |
1075 | szTmp[1] = 0; | ||
1072 | 1076 | ||
1073 | listItem.lParam = MAKELONG (TC_MLIST_ITEM_SYS_DRIVE, ENC_SYSDRIVE_PSEUDO_DRIVE_LETTER); | 1077 | listItem.lParam = MAKELONG (TC_MLIST_ITEM_SYS_DRIVE, ENC_SYSDRIVE_PSEUDO_DRIVE_LETTER); |
1074 | 1078 | ||
@@ -1082,7 +1086,7 @@ void LoadDriveLetters (HWND hTree, int drive) | |||
1082 | // Fully encrypted | 1086 | // Fully encrypted |
1083 | if (SysDriveOrPartitionFullyEncrypted (TRUE)) | 1087 | if (SysDriveOrPartitionFullyEncrypted (TRUE)) |
1084 | { | 1088 | { |
1085 | wcscpy (szTmpW, GetString ("SYSTEM_DRIVE")); | 1089 | StringCbCopyW (szTmpW, sizeof(szTmpW), GetString ("SYSTEM_DRIVE")); |
1086 | } | 1090 | } |
1087 | else | 1091 | else |
1088 | { | 1092 | { |
@@ -1094,23 +1098,23 @@ void LoadDriveLetters (HWND hTree, int drive) | |||
1094 | 1098 | ||
1095 | if (BootEncStatus.SetupMode != SetupDecryption) | 1099 | if (BootEncStatus.SetupMode != SetupDecryption) |
1096 | { | 1100 | { |
1097 | _snwprintf (szTmpW, | 1101 | StringCbPrintfW (szTmpW, |
1098 | sizeof szTmpW/2, | 1102 | sizeof szTmpW, |
1099 | GetString ("SYSTEM_DRIVE_ENCRYPTING"), | 1103 | GetString ("SYSTEM_DRIVE_ENCRYPTING"), |
1100 | (double) GetSysEncDeviceEncryptedPartSize (TRUE) / (double) GetSysEncDeviceSize (TRUE) * 100.0); | 1104 | (double) GetSysEncDeviceEncryptedPartSize (TRUE) / (double) GetSysEncDeviceSize (TRUE) * 100.0); |
1101 | } | 1105 | } |
1102 | else | 1106 | else |
1103 | { | 1107 | { |
1104 | _snwprintf (szTmpW, | 1108 | StringCbPrintfW (szTmpW, |
1105 | sizeof szTmpW/2, | 1109 | sizeof szTmpW, |
1106 | GetString ("SYSTEM_DRIVE_DECRYPTING"), | 1110 | GetString ("SYSTEM_DRIVE_DECRYPTING"), |
1107 | 100.0 - ((double) GetSysEncDeviceEncryptedPartSize (TRUE) / (double) GetSysEncDeviceSize (TRUE) * 100.0)); | 1111 | 100.0 - ((double) GetSysEncDeviceEncryptedPartSize (TRUE) / (double) GetSysEncDeviceSize (TRUE) * 100.0)); |
1108 | } | 1112 | } |
1109 | } | 1113 | } |
1110 | else | 1114 | else |
1111 | { | 1115 | { |
1112 | _snwprintf (szTmpW, | 1116 | StringCbPrintfW (szTmpW, |
1113 | sizeof szTmpW/2, | 1117 | sizeof szTmpW, |
1114 | GetString ("SYSTEM_DRIVE_PARTIALLY_ENCRYPTED"), | 1118 | GetString ("SYSTEM_DRIVE_PARTIALLY_ENCRYPTED"), |
1115 | (double) GetSysEncDeviceEncryptedPartSize (TRUE) / (double) GetSysEncDeviceSize (TRUE) * 100.0); | 1119 | (double) GetSysEncDeviceEncryptedPartSize (TRUE) / (double) GetSysEncDeviceSize (TRUE) * 100.0); |
1116 | } | 1120 | } |
@@ -1118,7 +1122,7 @@ void LoadDriveLetters (HWND hTree, int drive) | |||
1118 | 1122 | ||
1119 | ListSubItemSetW (hTree, listItem.iItem, 1, szTmpW); | 1123 | ListSubItemSetW (hTree, listItem.iItem, 1, szTmpW); |
1120 | 1124 | ||
1121 | GetSizeString (GetSysEncDeviceSize(TRUE), szTmpW); | 1125 | GetSizeString (GetSysEncDeviceSize(TRUE), szTmpW, sizeof(szTmpW)); |
1122 | ListSubItemSetW (hTree, listItem.iItem, 2, szTmpW); | 1126 | ListSubItemSetW (hTree, listItem.iItem, 2, szTmpW); |
1123 | 1127 | ||
1124 | EAGetName (szTmp, propSysEnc.ea); | 1128 | EAGetName (szTmp, propSysEnc.ea); |
@@ -1182,7 +1186,7 @@ void LoadDriveLetters (HWND hTree, int drive) | |||
1182 | // Fully encrypted | 1186 | // Fully encrypted |
1183 | if (SysDriveOrPartitionFullyEncrypted (TRUE)) | 1187 | if (SysDriveOrPartitionFullyEncrypted (TRUE)) |
1184 | { | 1188 | { |
1185 | wcscpy (szTmpW, GetString (IsHiddenOSRunning() ? "HIDDEN_SYSTEM_PARTITION" : "SYSTEM_PARTITION")); | 1189 | StringCbCopyW (szTmpW, sizeof(szTmpW), GetString (IsHiddenOSRunning() ? "HIDDEN_SYSTEM_PARTITION" : "SYSTEM_PARTITION")); |
1186 | } | 1190 | } |
1187 | else | 1191 | else |
1188 | { | 1192 | { |
@@ -1194,23 +1198,23 @@ void LoadDriveLetters (HWND hTree, int drive) | |||
1194 | 1198 | ||
1195 | if (BootEncStatus.SetupMode != SetupDecryption) | 1199 | if (BootEncStatus.SetupMode != SetupDecryption) |
1196 | { | 1200 | { |
1197 | _snwprintf (szTmpW, | 1201 | StringCbPrintfW (szTmpW, |
1198 | sizeof szTmpW/2, | 1202 | sizeof szTmpW, |
1199 | GetString ("SYSTEM_PARTITION_ENCRYPTING"), | 1203 | GetString ("SYSTEM_PARTITION_ENCRYPTING"), |
1200 | (double) GetSysEncDeviceEncryptedPartSize (TRUE) / (double) GetSysEncDeviceSize (TRUE) * 100.0); | 1204 | (double) GetSysEncDeviceEncryptedPartSize (TRUE) / (double) GetSysEncDeviceSize (TRUE) * 100.0); |
1201 | } | 1205 | } |
1202 | else | 1206 | else |
1203 | { | 1207 | { |
1204 | _snwprintf (szTmpW, | 1208 | StringCbPrintfW (szTmpW, |
1205 | sizeof szTmpW/2, | 1209 | sizeof szTmpW, |
1206 | GetString ("SYSTEM_PARTITION_DECRYPTING"), | 1210 | GetString ("SYSTEM_PARTITION_DECRYPTING"), |
1207 | 100.0 - ((double) GetSysEncDeviceEncryptedPartSize (TRUE) / (double) GetSysEncDeviceSize (TRUE) * 100.0)); | 1211 | 100.0 - ((double) GetSysEncDeviceEncryptedPartSize (TRUE) / (double) GetSysEncDeviceSize (TRUE) * 100.0)); |
1208 | } | 1212 | } |
1209 | } | 1213 | } |
1210 | else | 1214 | else |
1211 | { | 1215 | { |
1212 | _snwprintf (szTmpW, | 1216 | StringCbPrintfW (szTmpW, |
1213 | sizeof szTmpW/2, | 1217 | sizeof szTmpW, |
1214 | GetString ("SYSTEM_PARTITION_PARTIALLY_ENCRYPTED"), | 1218 | GetString ("SYSTEM_PARTITION_PARTIALLY_ENCRYPTED"), |
1215 | (double) GetSysEncDeviceEncryptedPartSize (TRUE) / (double) GetSysEncDeviceSize (TRUE) * 100.0); | 1219 | (double) GetSysEncDeviceEncryptedPartSize (TRUE) / (double) GetSysEncDeviceSize (TRUE) * 100.0); |
1216 | } | 1220 | } |
@@ -1220,7 +1224,7 @@ void LoadDriveLetters (HWND hTree, int drive) | |||
1220 | } | 1224 | } |
1221 | else | 1225 | else |
1222 | { | 1226 | { |
1223 | ToSBCS (driver.wszVolume[i]); | 1227 | ToSBCS (driver.wszVolume[i], sizeof(driver.wszVolume[i])); |
1224 | char *path = (char *) driver.wszVolume[i]; | 1228 | char *path = (char *) driver.wszVolume[i]; |
1225 | 1229 | ||
1226 | if (memcmp (path, "\\??\\", 4) == 0) | 1230 | if (memcmp (path, "\\??\\", 4) == 0) |
@@ -1235,7 +1239,7 @@ void LoadDriveLetters (HWND hTree, int drive) | |||
1235 | ListSubItemSet (hTree, listItem.iItem, 1, (char *) FitPathInGfxWidth (hTree, hUserFont, ListView_GetColumnWidth (hTree, 1) - GetTextGfxWidth (hTree, L"___", hUserFont), path).c_str()); | 1239 | ListSubItemSet (hTree, listItem.iItem, 1, (char *) FitPathInGfxWidth (hTree, hUserFont, ListView_GetColumnWidth (hTree, 1) - GetTextGfxWidth (hTree, L"___", hUserFont), path).c_str()); |
1236 | } | 1240 | } |
1237 | 1241 | ||
1238 | GetSizeString (bSysEncPartition ? GetSysEncDeviceSize(TRUE) : driver.diskLength[i], szTmpW); | 1242 | GetSizeString (bSysEncPartition ? GetSysEncDeviceSize(TRUE) : driver.diskLength[i], szTmpW, sizeof(szTmpW)); |
1239 | ListSubItemSetW (hTree, listItem.iItem, 2, szTmpW); | 1243 | ListSubItemSetW (hTree, listItem.iItem, 2, szTmpW); |
1240 | 1244 | ||
1241 | EAGetName (szTmp, bSysEncPartition ? propSysEnc.ea : driver.ea[i]); | 1245 | EAGetName (szTmp, bSysEncPartition ? propSysEnc.ea : driver.ea[i]); |
@@ -1276,7 +1280,7 @@ void LoadDriveLetters (HWND hTree, int drive) | |||
1276 | wchar_t szTmp[4096]; | 1280 | wchar_t szTmp[4096]; |
1277 | 1281 | ||
1278 | VolumeNotificationsList.bHidVolDamagePrevReported[i] = TRUE; | 1282 | VolumeNotificationsList.bHidVolDamagePrevReported[i] = TRUE; |
1279 | swprintf (szTmp, GetString ("DAMAGE_TO_HIDDEN_VOLUME_PREVENTED"), i+'A'); | 1283 | StringCbPrintfW (szTmp, sizeof(szTmp), GetString ("DAMAGE_TO_HIDDEN_VOLUME_PREVENTED"), i+'A'); |
1280 | SetForegroundWindow (GetParent(hTree)); | 1284 | SetForegroundWindow (GetParent(hTree)); |
1281 | MessageBoxW (GetParent(hTree), szTmp, lpszTitle, MB_ICONWARNING | MB_SETFOREGROUND | MB_TOPMOST); | 1285 | MessageBoxW (GetParent(hTree), szTmp, lpszTitle, MB_ICONWARNING | MB_SETFOREGROUND | MB_TOPMOST); |
1282 | } | 1286 | } |
@@ -1554,9 +1558,9 @@ BOOL CALLBACK PasswordChangeDlgProc (HWND hwndDlg, UINT msg, WPARAM wParam, LPAR | |||
1554 | bKeyboardLayoutChanged = TRUE; | 1558 | bKeyboardLayoutChanged = TRUE; |
1555 | 1559 | ||
1556 | wchar_t szTmp [4096]; | 1560 | wchar_t szTmp [4096]; |
1557 | wcscpy (szTmp, GetString ("KEYB_LAYOUT_CHANGE_PREVENTED")); | 1561 | StringCbCopyW (szTmp, sizeof(szTmp), GetString ("KEYB_LAYOUT_CHANGE_PREVENTED")); |
1558 | wcscat (szTmp, L"\n\n"); | 1562 | StringCbCatW (szTmp, sizeof(szTmp), L"\n\n"); |
1559 | wcscat (szTmp, GetString ("KEYB_LAYOUT_SYS_ENC_EXPLANATION")); | 1563 | StringCbCatW (szTmp, sizeof(szTmp), GetString ("KEYB_LAYOUT_SYS_ENC_EXPLANATION")); |
1560 | MessageBoxW (MainDlg, szTmp, lpszTitle, MB_ICONWARNING | MB_SETFOREGROUND | MB_TOPMOST); | 1564 | MessageBoxW (MainDlg, szTmp, lpszTitle, MB_ICONWARNING | MB_SETFOREGROUND | MB_TOPMOST); |
1561 | } | 1565 | } |
1562 | 1566 | ||
@@ -1570,9 +1574,9 @@ BOOL CALLBACK PasswordChangeDlgProc (HWND hwndDlg, UINT msg, WPARAM wParam, LPAR | |||
1570 | bKeybLayoutAltKeyWarningShown = TRUE; | 1574 | bKeybLayoutAltKeyWarningShown = TRUE; |
1571 | 1575 | ||
1572 | wchar_t szTmp [4096]; | 1576 | wchar_t szTmp [4096]; |
1573 | wcscpy (szTmp, GetString ("ALT_KEY_CHARS_NOT_FOR_SYS_ENCRYPTION")); | 1577 | StringCbCopyW (szTmp, sizeof(szTmp), GetString ("ALT_KEY_CHARS_NOT_FOR_SYS_ENCRYPTION")); |
1574 | wcscat (szTmp, L"\n\n"); | 1578 | StringCbCatW (szTmp, sizeof(szTmp), L"\n\n"); |
1575 | wcscat (szTmp, GetString ("KEYB_LAYOUT_SYS_ENC_EXPLANATION")); | 1579 | StringCbCatW (szTmp, sizeof(szTmp), GetString ("KEYB_LAYOUT_SYS_ENC_EXPLANATION")); |
1576 | MessageBoxW (MainDlg, szTmp, lpszTitle, MB_ICONINFORMATION | MB_SETFOREGROUND | MB_TOPMOST); | 1580 | MessageBoxW (MainDlg, szTmp, lpszTitle, MB_ICONINFORMATION | MB_SETFOREGROUND | MB_TOPMOST); |
1577 | } | 1581 | } |
1578 | } | 1582 | } |
@@ -1899,12 +1903,12 @@ BOOL CALLBACK PasswordDlgProc (HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lPa | |||
1899 | wstring label = GetFavoriteVolumeLabel (PasswordDlgVolume); | 1903 | wstring label = GetFavoriteVolumeLabel (PasswordDlgVolume); |
1900 | if (!label.empty()) | 1904 | if (!label.empty()) |
1901 | { | 1905 | { |
1902 | wsprintfW (s, GetString ("ENTER_PASSWORD_FOR_LABEL"), label.c_str()); | 1906 | StringCbPrintfW (s, sizeof(s), GetString ("ENTER_PASSWORD_FOR_LABEL"), label.c_str()); |
1903 | } | 1907 | } |
1904 | else | 1908 | else |
1905 | { | 1909 | { |
1906 | wsprintfW (s, GetString ("ENTER_PASSWORD_FOR"), "___"); | 1910 | StringCbPrintfW (s, sizeof(s), GetString ("ENTER_PASSWORD_FOR"), "___"); |
1907 | wsprintfW (s, GetString ("ENTER_PASSWORD_FOR"), FitPathInGfxWidth (hwndDlg, WindowTitleBarFont, rect.right - rect.left - GetTextGfxWidth (hwndDlg, s, WindowTitleBarFont), PasswordDlgVolume).c_str()); | 1911 | StringCbPrintfW (s, sizeof(s), GetString ("ENTER_PASSWORD_FOR"), FitPathInGfxWidth (hwndDlg, WindowTitleBarFont, rect.right - rect.left - GetTextGfxWidth (hwndDlg, s, WindowTitleBarFont), PasswordDlgVolume).c_str()); |
1908 | } | 1912 | } |
1909 | 1913 | ||
1910 | SetWindowTextW (hwndDlg, s); | 1914 | SetWindowTextW (hwndDlg, s); |
@@ -1957,7 +1961,7 @@ BOOL CALLBACK PasswordDlgProc (HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lPa | |||
1957 | SetWindowText (GetDlgItem (hwndDlg, IDC_PASSWORD), tmp); | 1961 | SetWindowText (GetDlgItem (hwndDlg, IDC_PASSWORD), tmp); |
1958 | SetWindowText (GetDlgItem (hwndDlg, IDC_PASSWORD), ""); | 1962 | SetWindowText (GetDlgItem (hwndDlg, IDC_PASSWORD), ""); |
1959 | 1963 | ||
1960 | sprintf (OrigKeyboardLayout, "%08X", (DWORD) GetKeyboardLayout (NULL) & 0xFFFF); | 1964 | StringCbPrintfA (OrigKeyboardLayout, sizeof(OrigKeyboardLayout),"%08X", (DWORD) GetKeyboardLayout (NULL) & 0xFFFF); |
1961 | 1965 | ||
1962 | DWORD keybLayout = (DWORD) LoadKeyboardLayout ("00000409", KLF_ACTIVATE); | 1966 | DWORD keybLayout = (DWORD) LoadKeyboardLayout ("00000409", KLF_ACTIVATE); |
1963 | 1967 | ||
@@ -2015,9 +2019,9 @@ BOOL CALLBACK PasswordDlgProc (HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lPa | |||
2015 | } | 2019 | } |
2016 | 2020 | ||
2017 | wchar_t szTmp [4096]; | 2021 | wchar_t szTmp [4096]; |
2018 | wcscpy (szTmp, GetString ("KEYB_LAYOUT_CHANGE_PREVENTED")); | 2022 | StringCbCopyW (szTmp, sizeof(szTmp), GetString ("KEYB_LAYOUT_CHANGE_PREVENTED")); |
2019 | wcscat (szTmp, L"\n\n"); | 2023 | StringCbCatW (szTmp, sizeof(szTmp), L"\n\n"); |
2020 | wcscat (szTmp, GetString ("KEYB_LAYOUT_SYS_ENC_EXPLANATION")); | 2024 | StringCbCatW (szTmp, sizeof(szTmp), GetString ("KEYB_LAYOUT_SYS_ENC_EXPLANATION")); |
2021 | MessageBoxW (MainDlg, szTmp, lpszTitle, MB_ICONWARNING | MB_SETFOREGROUND | MB_TOPMOST); | 2025 | MessageBoxW (MainDlg, szTmp, lpszTitle, MB_ICONWARNING | MB_SETFOREGROUND | MB_TOPMOST); |
2022 | } | 2026 | } |
2023 | } | 2027 | } |
@@ -2152,9 +2156,12 @@ BOOL CALLBACK PasswordDlgProc (HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lPa | |||
2152 | while (count-- > 0) | 2156 | while (count-- > 0) |
2153 | { | 2157 | { |
2154 | KeyFile *kf = (KeyFile *) malloc (sizeof (KeyFile)); | 2158 | KeyFile *kf = (KeyFile *) malloc (sizeof (KeyFile)); |
2155 | DragQueryFile (hdrop, i++, kf->FileName, sizeof (kf->FileName)); | 2159 | if (kf) |
2156 | FirstKeyFile = KeyFileAdd (FirstKeyFile, kf); | 2160 | { |
2157 | KeyFilesEnable = TRUE; | 2161 | DragQueryFile (hdrop, i++, kf->FileName, sizeof (kf->FileName)); |
2162 | FirstKeyFile = KeyFileAdd (FirstKeyFile, kf); | ||
2163 | KeyFilesEnable = TRUE; | ||
2164 | } | ||
2158 | } | 2165 | } |
2159 | 2166 | ||
2160 | SetCheckBox (hwndDlg, IDC_KEYFILES_ENABLE, KeyFilesEnable); | 2167 | SetCheckBox (hwndDlg, IDC_KEYFILES_ENABLE, KeyFilesEnable); |
@@ -2351,23 +2358,27 @@ BOOL CALLBACK PreferencesDlgProc (HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM | |||
2351 | if (lw == IDC_MORE_SETTINGS) | 2358 | if (lw == IDC_MORE_SETTINGS) |
2352 | { | 2359 | { |
2353 | HMENU popup = CreatePopupMenu (); | 2360 | HMENU popup = CreatePopupMenu (); |
2361 | if (popup) | ||
2362 | { | ||
2363 | AppendMenuW (popup, MF_STRING, IDM_LANGUAGE, GetString ("IDM_LANGUAGE")); | ||
2364 | AppendMenuW (popup, MF_STRING, IDM_HOTKEY_SETTINGS, GetString ("IDM_HOTKEY_SETTINGS")); | ||
2365 | AppendMenuW (popup, MF_STRING, IDM_PERFORMANCE_SETTINGS, GetString ("IDM_PERFORMANCE_SETTINGS")); | ||
2366 | AppendMenuW (popup, MF_STRING, IDM_SYSENC_SETTINGS, GetString ("IDM_SYSENC_SETTINGS")); | ||
2367 | AppendMenuW (popup, MF_STRING, IDM_SYS_FAVORITES_SETTINGS, GetString ("IDM_SYS_FAVORITES_SETTINGS")); | ||
2368 | AppendMenuW (popup, MF_STRING, IDM_DEFAULT_KEYFILES, GetString ("IDM_DEFAULT_KEYFILES")); | ||
2369 | AppendMenuW (popup, MF_STRING, IDM_TOKEN_PREFERENCES, GetString ("IDM_TOKEN_PREFERENCES")); | ||
2354 | 2370 | ||
2355 | AppendMenuW (popup, MF_STRING, IDM_LANGUAGE, GetString ("IDM_LANGUAGE")); | 2371 | RECT rect; |
2356 | AppendMenuW (popup, MF_STRING, IDM_HOTKEY_SETTINGS, GetString ("IDM_HOTKEY_SETTINGS")); | 2372 | GetWindowRect (GetDlgItem (hwndDlg, IDC_MORE_SETTINGS), &rect); |
2357 | AppendMenuW (popup, MF_STRING, IDM_PERFORMANCE_SETTINGS, GetString ("IDM_PERFORMANCE_SETTINGS")); | ||
2358 | AppendMenuW (popup, MF_STRING, IDM_SYSENC_SETTINGS, GetString ("IDM_SYSENC_SETTINGS")); | ||
2359 | AppendMenuW (popup, MF_STRING, IDM_SYS_FAVORITES_SETTINGS, GetString ("IDM_SYS_FAVORITES_SETTINGS")); | ||
2360 | AppendMenuW (popup, MF_STRING, IDM_DEFAULT_KEYFILES, GetString ("IDM_DEFAULT_KEYFILES")); | ||
2361 | AppendMenuW (popup, MF_STRING, IDM_TOKEN_PREFERENCES, GetString ("IDM_TOKEN_PREFERENCES")); | ||
2362 | |||
2363 | RECT rect; | ||
2364 | GetWindowRect (GetDlgItem (hwndDlg, IDC_MORE_SETTINGS), &rect); | ||
2365 | 2373 | ||
2366 | int menuItem = TrackPopupMenu (popup, TPM_RETURNCMD | TPM_LEFTBUTTON, rect.left + 2, rect.top + 2, 0, hwndDlg, NULL); | 2374 | int menuItem = TrackPopupMenu (popup, TPM_RETURNCMD | TPM_LEFTBUTTON, rect.left + 2, rect.top + 2, 0, hwndDlg, NULL); |
2367 | DestroyMenu (popup); | 2375 | DestroyMenu (popup); |
2368 | 2376 | ||
2369 | SendMessage (MainDlg, WM_COMMAND, menuItem, NULL); | 2377 | SendMessage (MainDlg, WM_COMMAND, menuItem, NULL); |
2370 | return 1; | 2378 | return 1; |
2379 | } | ||
2380 | else | ||
2381 | return 0; | ||
2371 | } | 2382 | } |
2372 | 2383 | ||
2373 | if (HIWORD (wParam) == BN_CLICKED) | 2384 | if (HIWORD (wParam) == BN_CLICKED) |
@@ -2739,7 +2750,7 @@ BOOL CALLBACK VolumePropertiesDlgProc (HWND hwndDlg, UINT msg, WPARAM wParam, LP | |||
2739 | 2750 | ||
2740 | // Size | 2751 | // Size |
2741 | ListItemAddW (list, i, GetString ("SIZE")); | 2752 | ListItemAddW (list, i, GetString ("SIZE")); |
2742 | swprintf (sw, L"%I64u %s", prop.diskLength, GetString ("BYTES")); | 2753 | StringCbPrintfW (sw, sizeof(sw), L"%I64u %s", prop.diskLength, GetString ("BYTES")); |
2743 | ListSubItemSetW (list, i++, 1, sw); | 2754 | ListSubItemSetW (list, i++, 1, sw); |
2744 | 2755 | ||
2745 | // Type | 2756 | // Type |
@@ -2802,7 +2813,7 @@ BOOL CALLBACK VolumePropertiesDlgProc (HWND hwndDlg, UINT msg, WPARAM wParam, LP | |||
2802 | 2813 | ||
2803 | // Primary key | 2814 | // Primary key |
2804 | ListItemAddW (list, i, GetString ("KEY_SIZE")); | 2815 | ListItemAddW (list, i, GetString ("KEY_SIZE")); |
2805 | wsprintfW (sw, L"%d %s", size * 8, GetString ("BITS")); | 2816 | StringCbPrintfW (sw, sizeof(sw), L"%d %s", size * 8, GetString ("BITS")); |
2806 | ListSubItemSetW (list, i++, 1, sw); | 2817 | ListSubItemSetW (list, i++, 1, sw); |
2807 | 2818 | ||
2808 | if (strcmp (EAGetModeName (prop.ea, prop.mode, TRUE), "XTS") == 0) | 2819 | if (strcmp (EAGetModeName (prop.ea, prop.mode, TRUE), "XTS") == 0) |
@@ -2817,7 +2828,7 @@ BOOL CALLBACK VolumePropertiesDlgProc (HWND hwndDlg, UINT msg, WPARAM wParam, LP | |||
2817 | // Tweak key (LRW) | 2828 | // Tweak key (LRW) |
2818 | 2829 | ||
2819 | ListItemAddW (list, i, GetString ("SECONDARY_KEY_SIZE_LRW")); | 2830 | ListItemAddW (list, i, GetString ("SECONDARY_KEY_SIZE_LRW")); |
2820 | swprintf (sw, L"%d %s", CipherGetBlockSize (EAGetFirstCipher(prop.ea))*8, GetString ("BITS")); | 2831 | StringCbPrintfW (sw, sizeof(sw), L"%d %s", CipherGetBlockSize (EAGetFirstCipher(prop.ea))*8, GetString ("BITS")); |
2821 | ListSubItemSetW (list, i++, 1, sw); | 2832 | ListSubItemSetW (list, i++, 1, sw); |
2822 | } | 2833 | } |
2823 | } | 2834 | } |
@@ -2830,20 +2841,20 @@ BOOL CALLBACK VolumePropertiesDlgProc (HWND hwndDlg, UINT msg, WPARAM wParam, LP | |||
2830 | wchar_t tmpstr[64]; | 2841 | wchar_t tmpstr[64]; |
2831 | int i = EAGetLastCipher(prop.ea); | 2842 | int i = EAGetLastCipher(prop.ea); |
2832 | 2843 | ||
2833 | swprintf (sw, L"%d", CipherGetBlockSize(i)*8); | 2844 | StringCbPrintfW (sw, sizeof(sw), L"%d", CipherGetBlockSize(i)*8); |
2834 | 2845 | ||
2835 | while (i = EAGetPreviousCipher(prop.ea, i)) | 2846 | while (i = EAGetPreviousCipher(prop.ea, i)) |
2836 | { | 2847 | { |
2837 | swprintf (tmpstr, L"/%d", CipherGetBlockSize(i)*8); | 2848 | StringCbPrintfW (tmpstr, sizeof(tmpstr), L"/%d", CipherGetBlockSize(i)*8); |
2838 | wcscat (sw, tmpstr); | 2849 | StringCbCatW (sw, sizeof(sw), tmpstr); |
2839 | } | 2850 | } |
2840 | wcscat (sw, L" "); | 2851 | StringCbCatW (sw, sizeof(sw), L" "); |
2841 | } | 2852 | } |
2842 | else | 2853 | else |
2843 | { | 2854 | { |
2844 | swprintf (sw, L"%d ", CipherGetBlockSize (EAGetFirstCipher(prop.ea))*8); | 2855 | StringCbPrintfW (sw, sizeof(sw), L"%d ", CipherGetBlockSize (EAGetFirstCipher(prop.ea))*8); |
2845 | } | 2856 | } |
2846 | wcscat (sw, GetString ("BITS")); | 2857 | StringCbCatW (sw, sizeof(sw), GetString ("BITS")); |
2847 | ListSubItemSetW (list, i++, 1, sw); | 2858 | ListSubItemSetW (list, i++, 1, sw); |
2848 | 2859 | ||
2849 | // Mode | 2860 | // Mode |
@@ -2906,7 +2917,7 @@ BOOL CALLBACK VolumePropertiesDlgProc (HWND hwndDlg, UINT msg, WPARAM wParam, LP | |||
2906 | { | 2917 | { |
2907 | // Volume format version | 2918 | // Volume format version |
2908 | ListItemAddW (list, i, GetString ("VOLUME_FORMAT_VERSION")); | 2919 | ListItemAddW (list, i, GetString ("VOLUME_FORMAT_VERSION")); |
2909 | sprintf (szTmp, "%d", prop.volFormatVersion); | 2920 | StringCbPrintfA (szTmp, sizeof(szTmp), "%d", prop.volFormatVersion); |
2910 | ListSubItemSet (list, i++, 1, szTmp); | 2921 | ListSubItemSet (list, i++, 1, szTmp); |
2911 | 2922 | ||
2912 | // Backup header | 2923 | // Backup header |
@@ -2916,12 +2927,12 @@ BOOL CALLBACK VolumePropertiesDlgProc (HWND hwndDlg, UINT msg, WPARAM wParam, LP | |||
2916 | 2927 | ||
2917 | // Total data read | 2928 | // Total data read |
2918 | ListItemAddW (list, i, GetString ("TOTAL_DATA_READ")); | 2929 | ListItemAddW (list, i, GetString ("TOTAL_DATA_READ")); |
2919 | GetSizeString (prop.totalBytesRead, sw); | 2930 | GetSizeString (prop.totalBytesRead, sw, sizeof(sw)); |
2920 | ListSubItemSetW (list, i++, 1, sw); | 2931 | ListSubItemSetW (list, i++, 1, sw); |
2921 | 2932 | ||
2922 | // Total data written | 2933 | // Total data written |
2923 | ListItemAddW (list, i, GetString ("TOTAL_DATA_WRITTEN")); | 2934 | ListItemAddW (list, i, GetString ("TOTAL_DATA_WRITTEN")); |
2924 | GetSizeString (prop.totalBytesWritten, sw); | 2935 | GetSizeString (prop.totalBytesWritten, sw, sizeof(sw)); |
2925 | ListSubItemSetW (list, i++, 1, sw); | 2936 | ListSubItemSetW (list, i++, 1, sw); |
2926 | 2937 | ||
2927 | if (bSysEnc) | 2938 | if (bSysEnc) |
@@ -2939,8 +2950,8 @@ BOOL CALLBACK VolumePropertiesDlgProc (HWND hwndDlg, UINT msg, WPARAM wParam, LP | |||
2939 | else | 2950 | else |
2940 | { | 2951 | { |
2941 | 2952 | ||
2942 | _snwprintf (sw, | 2953 | StringCbPrintfW (sw, |
2943 | sizeof sw/2, | 2954 | sizeof sw, |
2944 | GetString ("PROCESSED_PORTION_X_PERCENT"), | 2955 | GetString ("PROCESSED_PORTION_X_PERCENT"), |
2945 | (double) GetSysEncDeviceEncryptedPartSize (FALSE) / (double) GetSysEncDeviceSize (FALSE) * 100.0); | 2956 | (double) GetSysEncDeviceEncryptedPartSize (FALSE) / (double) GetSysEncDeviceSize (FALSE) * 100.0); |
2946 | 2957 | ||
@@ -3078,6 +3089,7 @@ BOOL CALLBACK TravelerDlgProc (HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lPa | |||
3078 | char sysDir[MAX_PATH]; | 3089 | char sysDir[MAX_PATH]; |
3079 | char volName[MAX_PATH]; | 3090 | char volName[MAX_PATH]; |
3080 | int drive; | 3091 | int drive; |
3092 | char* ptr; | ||
3081 | 3093 | ||
3082 | GetDlgItemText (hwndDlg, IDC_DIRECTORY, dstDir, sizeof dstDir); | 3094 | GetDlgItemText (hwndDlg, IDC_DIRECTORY, dstDir, sizeof dstDir); |
3083 | volName[0] = 0; | 3095 | volName[0] = 0; |
@@ -3111,21 +3123,22 @@ BOOL CALLBACK TravelerDlgProc (HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lPa | |||
3111 | if (volName[1] != 0) | 3123 | if (volName[1] != 0) |
3112 | { | 3124 | { |
3113 | volName[0] = '"'; | 3125 | volName[0] = '"'; |
3114 | strcat (volName, "\""); | 3126 | StringCbCatA (volName, sizeof(volName), "\""); |
3115 | } | 3127 | } |
3116 | 3128 | ||
3117 | GetModuleFileName (NULL, appDir, sizeof (appDir)); | 3129 | GetModuleFileName (NULL, appDir, sizeof (appDir)); |
3118 | strrchr (appDir, '\\')[0] = 0; | 3130 | if (ptr = strrchr (appDir, '\\')) |
3131 | ptr[0] = 0; | ||
3119 | 3132 | ||
3120 | WaitCursor (); | 3133 | WaitCursor (); |
3121 | GetSystemDirectory (sysDir, sizeof (sysDir)); | 3134 | GetSystemDirectory (sysDir, sizeof (sysDir)); |
3122 | 3135 | ||
3123 | sprintf (dstPath, "%s\\VeraCrypt", dstDir); | 3136 | StringCbPrintfA (dstPath, sizeof(dstPath), "%s\\VeraCrypt", dstDir); |
3124 | CreateDirectory (dstPath, NULL); | 3137 | CreateDirectory (dstPath, NULL); |
3125 | 3138 | ||
3126 | // Main app | 3139 | // Main app |
3127 | sprintf (srcPath, "%s\\VeraCrypt.exe", appDir); | 3140 | StringCbPrintfA (srcPath, sizeof(srcPath), "%s\\VeraCrypt.exe", appDir); |
3128 | sprintf (dstPath, "%s\\VeraCrypt\\VeraCrypt.exe", dstDir); | 3141 | StringCbPrintfA (dstPath, sizeof(dstPath), "%s\\VeraCrypt\\VeraCrypt.exe", dstDir); |
3129 | if (!TCCopyFile (srcPath, dstPath)) | 3142 | if (!TCCopyFile (srcPath, dstPath)) |
3130 | { | 3143 | { |
3131 | handleWin32Error (hwndDlg); | 3144 | handleWin32Error (hwndDlg); |
@@ -3135,8 +3148,8 @@ BOOL CALLBACK TravelerDlgProc (HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lPa | |||
3135 | // Wizard | 3148 | // Wizard |
3136 | if (copyWizard) | 3149 | if (copyWizard) |
3137 | { | 3150 | { |
3138 | sprintf (srcPath, "%s\\VeraCrypt Format.exe", appDir); | 3151 | StringCbPrintfA (srcPath, sizeof(srcPath), "%s\\VeraCrypt Format.exe", appDir); |
3139 | sprintf (dstPath, "%s\\VeraCrypt\\VeraCrypt Format.exe", dstDir); | 3152 | StringCbPrintfA (dstPath, sizeof(dstPath), "%s\\VeraCrypt\\VeraCrypt Format.exe", dstDir); |
3140 | if (!TCCopyFile (srcPath, dstPath)) | 3153 | if (!TCCopyFile (srcPath, dstPath)) |
3141 | { | 3154 | { |
3142 | handleWin32Error (hwndDlg); | 3155 | handleWin32Error (hwndDlg); |
@@ -3145,8 +3158,8 @@ BOOL CALLBACK TravelerDlgProc (HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lPa | |||
3145 | } | 3158 | } |
3146 | 3159 | ||
3147 | // Driver | 3160 | // Driver |
3148 | sprintf (srcPath, "%s\\veracrypt.sys", appDir); | 3161 | StringCbPrintfA (srcPath, sizeof(srcPath), "%s\\veracrypt.sys", appDir); |
3149 | sprintf (dstPath, "%s\\VeraCrypt\\veracrypt.sys", dstDir); | 3162 | StringCbPrintfA (dstPath, sizeof(dstPath), "%s\\VeraCrypt\\veracrypt.sys", dstDir); |
3150 | if (!TCCopyFile (srcPath, dstPath)) | 3163 | if (!TCCopyFile (srcPath, dstPath)) |
3151 | { | 3164 | { |
3152 | handleWin32Error (hwndDlg); | 3165 | handleWin32Error (hwndDlg); |
@@ -3154,8 +3167,8 @@ BOOL CALLBACK TravelerDlgProc (HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lPa | |||
3154 | } | 3167 | } |
3155 | 3168 | ||
3156 | // Driver x64 | 3169 | // Driver x64 |
3157 | sprintf (srcPath, "%s\\veracrypt-x64.sys", appDir); | 3170 | StringCbPrintfA (srcPath, sizeof(srcPath), "%s\\veracrypt-x64.sys", appDir); |
3158 | sprintf (dstPath, "%s\\VeraCrypt\\veracrypt-x64.sys", dstDir); | 3171 | StringCbPrintfA (dstPath, sizeof(dstPath), "%s\\VeraCrypt\\veracrypt-x64.sys", dstDir); |
3159 | if (!TCCopyFile (srcPath, dstPath)) | 3172 | if (!TCCopyFile (srcPath, dstPath)) |
3160 | { | 3173 | { |
3161 | handleWin32Error (hwndDlg); | 3174 | handleWin32Error (hwndDlg); |
@@ -3165,13 +3178,13 @@ BOOL CALLBACK TravelerDlgProc (HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lPa | |||
3165 | if (GetPreferredLangId () && strcmp (GetPreferredLangId (), "en") != 0) | 3178 | if (GetPreferredLangId () && strcmp (GetPreferredLangId (), "en") != 0) |
3166 | { | 3179 | { |
3167 | // Language pack | 3180 | // Language pack |
3168 | sprintf (srcPath, "%s\\Language.%s.xml", appDir, GetPreferredLangId ()); | 3181 | StringCbPrintfA (srcPath, sizeof(srcPath), "%s\\Language.%s.xml", appDir, GetPreferredLangId ()); |
3169 | sprintf (dstPath, "%s\\VeraCrypt\\Language.%s.xml", dstDir, GetPreferredLangId ()); | 3182 | StringCbPrintfA (dstPath, sizeof(dstPath), "%s\\VeraCrypt\\Language.%s.xml", dstDir, GetPreferredLangId ()); |
3170 | TCCopyFile (srcPath, dstPath); | 3183 | TCCopyFile (srcPath, dstPath); |
3171 | } | 3184 | } |
3172 | 3185 | ||
3173 | // AutoRun | 3186 | // AutoRun |
3174 | sprintf (dstPath, "%s\\autorun.inf", dstDir); | 3187 | StringCbPrintfA (dstPath, sizeof(dstPath), "%s\\autorun.inf", dstDir); |
3175 | DeleteFile (dstPath); | 3188 | DeleteFile (dstPath); |
3176 | if (bAutoRun) | 3189 | if (bAutoRun) |
3177 | { | 3190 | { |
@@ -3187,7 +3200,7 @@ BOOL CALLBACK TravelerDlgProc (HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lPa | |||
3187 | goto stop; | 3200 | goto stop; |
3188 | } | 3201 | } |
3189 | 3202 | ||
3190 | sprintf (autoMount, "VeraCrypt\\VeraCrypt.exe /q background%s%s%s%s /m rm /v %s", | 3203 | StringCbPrintfA (autoMount, sizeof(autoMount), "VeraCrypt\\VeraCrypt.exe /q background%s%s%s%s /m rm /v %s", |
3191 | drive > 0 ? driveLetter : "", | 3204 | drive > 0 ? driveLetter : "", |
3192 | bExplore ? " /e" : "", | 3205 | bExplore ? " /e" : "", |
3193 | bCacheInDriver ? " /c y" : "", | 3206 | bCacheInDriver ? " /c y" : "", |
@@ -3452,7 +3465,7 @@ static BOOL Mount (HWND hwndDlg, int nDosDriveNo, char *szFileName) | |||
3452 | } | 3465 | } |
3453 | else if (!Silent) | 3466 | else if (!Silent) |
3454 | { | 3467 | { |
3455 | strcpy (PasswordDlgVolume, szFileName); | 3468 | StringCbCopyA (PasswordDlgVolume, sizeof(PasswordDlgVolume), szFileName); |
3456 | 3469 | ||
3457 | if (!AskVolumePassword (hwndDlg, &VolumePassword, NULL, TRUE)) | 3470 | if (!AskVolumePassword (hwndDlg, &VolumePassword, NULL, TRUE)) |
3458 | goto ret; | 3471 | goto ret; |
@@ -3615,7 +3628,7 @@ retry: | |||
3615 | wchar_t msg[4096]; | 3628 | wchar_t msg[4096]; |
3616 | 3629 | ||
3617 | VolumeNotificationsList.bHidVolDamagePrevReported [unmount.nDosDriveNo] = TRUE; | 3630 | VolumeNotificationsList.bHidVolDamagePrevReported [unmount.nDosDriveNo] = TRUE; |
3618 | swprintf (msg, GetString ("DAMAGE_TO_HIDDEN_VOLUME_PREVENTED"), unmount.nDosDriveNo + 'A'); | 3631 | StringCbPrintfW (msg, sizeof(msg), GetString ("DAMAGE_TO_HIDDEN_VOLUME_PREVENTED"), unmount.nDosDriveNo + 'A'); |
3619 | SetForegroundWindow (hwndDlg); | 3632 | SetForegroundWindow (hwndDlg); |
3620 | MessageBoxW (hwndDlg, msg, lpszTitle, MB_ICONWARNING | MB_SETFOREGROUND | MB_TOPMOST); | 3633 | MessageBoxW (hwndDlg, msg, lpszTitle, MB_ICONWARNING | MB_SETFOREGROUND | MB_TOPMOST); |
3621 | 3634 | ||
@@ -3836,9 +3849,9 @@ static BOOL MountAllDevices (HWND hwndDlg, BOOL bPasswordPrompt) | |||
3836 | { | 3849 | { |
3837 | WCHAR szTmp[4096]; | 3850 | WCHAR szTmp[4096]; |
3838 | 3851 | ||
3839 | swprintf (szTmp, GetString (KeyFilesEnable || FirstCmdKeyFile ? "PASSWORD_OR_KEYFILE_WRONG_AUTOMOUNT" : "PASSWORD_WRONG_AUTOMOUNT")); | 3852 | StringCbPrintfW (szTmp, sizeof(szTmp), GetString (KeyFilesEnable || FirstCmdKeyFile ? "PASSWORD_OR_KEYFILE_WRONG_AUTOMOUNT" : "PASSWORD_WRONG_AUTOMOUNT")); |
3840 | if (CheckCapsLock (hwndDlg, TRUE)) | 3853 | if (CheckCapsLock (hwndDlg, TRUE)) |
3841 | wcscat (szTmp, GetString ("PASSWORD_WRONG_CAPSLOCK_ON")); | 3854 | StringCbCatW (szTmp, sizeof(szTmp), GetString ("PASSWORD_WRONG_CAPSLOCK_ON")); |
3842 | 3855 | ||
3843 | MessageBoxW (hwndDlg, szTmp, lpszTitle, MB_ICONWARNING); | 3856 | MessageBoxW (hwndDlg, szTmp, lpszTitle, MB_ICONWARNING); |
3844 | } | 3857 | } |
@@ -3986,7 +3999,7 @@ static void ChangeSysEncPassword (HWND hwndDlg, BOOL bOnlyChangeKDF) | |||
3986 | 3999 | ||
3987 | if (CreateSysEncMutex ()) // If no instance of the wizard is currently taking care of system encryption | 4000 | if (CreateSysEncMutex ()) // If no instance of the wizard is currently taking care of system encryption |
3988 | { | 4001 | { |
3989 | sprintf (OrigKeyboardLayout, "%08X", (DWORD) GetKeyboardLayout (NULL) & 0xFFFF); | 4002 | StringCbPrintfA (OrigKeyboardLayout, sizeof(OrigKeyboardLayout), "%08X", (DWORD) GetKeyboardLayout (NULL) & 0xFFFF); |
3990 | 4003 | ||
3991 | bSysEncPwdChangeDlgMode = TRUE; | 4004 | bSysEncPwdChangeDlgMode = TRUE; |
3992 | 4005 | ||
@@ -4251,7 +4264,7 @@ void CreateRescueDisk (void) | |||
4251 | WaitCursor(); | 4264 | WaitCursor(); |
4252 | BootEncObj->CreateRescueIsoImage (false, szRescueDiskISO); | 4265 | BootEncObj->CreateRescueIsoImage (false, szRescueDiskISO); |
4253 | 4266 | ||
4254 | _snwprintf (szTmp, sizeof szTmp / 2, | 4267 | StringCbPrintfW (szTmp, sizeof szTmp, |
4255 | GetString (IsWindowsIsoBurnerAvailable() ? "RESCUE_DISK_NON_WIZARD_CREATION_WIN_ISOBURN" : "RESCUE_DISK_NON_WIZARD_CREATION_BURN"), | 4268 | GetString (IsWindowsIsoBurnerAvailable() ? "RESCUE_DISK_NON_WIZARD_CREATION_WIN_ISOBURN" : "RESCUE_DISK_NON_WIZARD_CREATION_BURN"), |
4256 | szRescueDiskISO); | 4269 | szRescueDiskISO); |
4257 | 4270 | ||
@@ -4785,7 +4798,7 @@ BOOL CALLBACK MainDialogProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPa | |||
4785 | { | 4798 | { |
4786 | VolumePassword.Length = 0; | 4799 | VolumePassword.Length = 0; |
4787 | 4800 | ||
4788 | strcpy (PasswordDlgVolume, szFileName); | 4801 | StringCbCopyA (PasswordDlgVolume, sizeof(PasswordDlgVolume),szFileName); |
4789 | if (!AskVolumePassword (hwndDlg, &VolumePassword, NULL, TRUE)) | 4802 | if (!AskVolumePassword (hwndDlg, &VolumePassword, NULL, TRUE)) |
4790 | break; | 4803 | break; |
4791 | 4804 | ||
@@ -5323,7 +5336,7 @@ BOOL CALLBACK MainDialogProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPa | |||
5323 | if (MainWindowHidden) | 5336 | if (MainWindowHidden) |
5324 | { | 5337 | { |
5325 | AppendMenuW (popup, MF_STRING, IDM_SHOW_HIDE, GetString ("SHOW_TC")); | 5338 | AppendMenuW (popup, MF_STRING, IDM_SHOW_HIDE, GetString ("SHOW_TC")); |
5326 | AppendMenu (popup, MF_SEPARATOR, 0, NULL); | 5339 | AppendMenu (popup, MF_SEPARATOR, 0, ""); |
5327 | } | 5340 | } |
5328 | else if (bEnableBkgTask | 5341 | else if (bEnableBkgTask |
5329 | && (!(LastKnownMountList.ulMountedDrives == 0 | 5342 | && (!(LastKnownMountList.ulMountedDrives == 0 |
@@ -5332,12 +5345,12 @@ BOOL CALLBACK MainDialogProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPa | |||
5332 | && GetDriverRefCount () < 2))) | 5345 | && GetDriverRefCount () < 2))) |
5333 | { | 5346 | { |
5334 | AppendMenuW (popup, MF_STRING, IDM_SHOW_HIDE, GetString ("HIDE_TC")); | 5347 | AppendMenuW (popup, MF_STRING, IDM_SHOW_HIDE, GetString ("HIDE_TC")); |
5335 | AppendMenu (popup, MF_SEPARATOR, 0, NULL); | 5348 | AppendMenu (popup, MF_SEPARATOR, 0, ""); |
5336 | } | 5349 | } |
5337 | AppendMenuW (popup, MF_STRING, IDM_MOUNTALL, GetString ("IDC_MOUNTALL")); | 5350 | AppendMenuW (popup, MF_STRING, IDM_MOUNTALL, GetString ("IDC_MOUNTALL")); |
5338 | AppendMenuW (popup, MF_STRING, IDM_MOUNT_FAVORITE_VOLUMES, GetString ("IDM_MOUNT_FAVORITE_VOLUMES")); | 5351 | AppendMenuW (popup, MF_STRING, IDM_MOUNT_FAVORITE_VOLUMES, GetString ("IDM_MOUNT_FAVORITE_VOLUMES")); |
5339 | AppendMenuW (popup, MF_STRING, IDM_UNMOUNTALL, GetString ("IDC_UNMOUNTALL")); | 5352 | AppendMenuW (popup, MF_STRING, IDM_UNMOUNTALL, GetString ("IDC_UNMOUNTALL")); |
5340 | AppendMenu (popup, MF_SEPARATOR, 0, NULL); | 5353 | AppendMenu (popup, MF_SEPARATOR, 0, ""); |
5341 | 5354 | ||
5342 | for (n = 0; n < 2; n++) | 5355 | for (n = 0; n < 2; n++) |
5343 | { | 5356 | { |
@@ -5352,7 +5365,7 @@ BOOL CALLBACK MainDialogProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPa | |||
5352 | 5365 | ||
5353 | wstring label = GetFavoriteVolumeLabel (WideToSingleString (vol)); | 5366 | wstring label = GetFavoriteVolumeLabel (WideToSingleString (vol)); |
5354 | 5367 | ||
5355 | wsprintfW (s, L"%s %c: (%s)", | 5368 | StringCbPrintfW (s, sizeof(s), L"%s %c: (%s)", |
5356 | GetString (n==0 ? "OPEN" : "DISMOUNT"), | 5369 | GetString (n==0 ? "OPEN" : "DISMOUNT"), |
5357 | i + L'A', | 5370 | i + L'A', |
5358 | label.empty() ? vol : label.c_str()); | 5371 | label.empty() ? vol : label.c_str()); |
@@ -5360,14 +5373,14 @@ BOOL CALLBACK MainDialogProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPa | |||
5360 | } | 5373 | } |
5361 | } | 5374 | } |
5362 | if (LastKnownMountList.ulMountedDrives != 0) | 5375 | if (LastKnownMountList.ulMountedDrives != 0) |
5363 | AppendMenu (popup, MF_SEPARATOR, 0, NULL); | 5376 | AppendMenu (popup, MF_SEPARATOR, 0, ""); |
5364 | } | 5377 | } |
5365 | 5378 | ||
5366 | AppendMenuW (popup, MF_STRING, IDM_HELP, GetString ("MENU_HELP")); | 5379 | AppendMenuW (popup, MF_STRING, IDM_HELP, GetString ("MENU_HELP")); |
5367 | AppendMenuW (popup, MF_STRING, IDM_HOMEPAGE_SYSTRAY, GetString ("HOMEPAGE")); | 5380 | AppendMenuW (popup, MF_STRING, IDM_HOMEPAGE_SYSTRAY, GetString ("HOMEPAGE")); |
5368 | AppendMenuW (popup, MF_STRING, IDM_PREFERENCES, GetString ("IDM_PREFERENCES")); | 5381 | AppendMenuW (popup, MF_STRING, IDM_PREFERENCES, GetString ("IDM_PREFERENCES")); |
5369 | AppendMenuW (popup, MF_STRING, IDM_ABOUT, GetString ("IDM_ABOUT")); | 5382 | AppendMenuW (popup, MF_STRING, IDM_ABOUT, GetString ("IDM_ABOUT")); |
5370 | AppendMenu (popup, MF_SEPARATOR, 0, NULL); | 5383 | AppendMenu (popup, MF_SEPARATOR, 0, ""); |
5371 | AppendMenuW (popup, MF_STRING, IDCANCEL, GetString ("EXIT")); | 5384 | AppendMenuW (popup, MF_STRING, IDCANCEL, GetString ("EXIT")); |
5372 | 5385 | ||
5373 | GetCursorPos (&pos); | 5386 | GetCursorPos (&pos); |
@@ -5393,7 +5406,7 @@ BOOL CALLBACK MainDialogProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPa | |||
5393 | if (Dismount (hwndDlg, sel - TRAYICON_MENU_DRIVE_OFFSET - 26)) | 5406 | if (Dismount (hwndDlg, sel - TRAYICON_MENU_DRIVE_OFFSET - 26)) |
5394 | { | 5407 | { |
5395 | wchar_t txt [2048]; | 5408 | wchar_t txt [2048]; |
5396 | wsprintfW (txt, GetString ("VOLUME_MOUNTED_AS_DRIVE_LETTER_X_DISMOUNTED"), sel - TRAYICON_MENU_DRIVE_OFFSET - 26 + L'A'); | 5409 | StringCbPrintfW (txt, sizeof(txt), GetString ("VOLUME_MOUNTED_AS_DRIVE_LETTER_X_DISMOUNTED"), sel - TRAYICON_MENU_DRIVE_OFFSET - 26 + L'A'); |
5397 | 5410 | ||
5398 | InfoBalloonDirect (GetString ("SUCCESSFULLY_DISMOUNTED"), txt); | 5411 | InfoBalloonDirect (GetString ("SUCCESSFULLY_DISMOUNTED"), txt); |
5399 | } | 5412 | } |
@@ -5499,7 +5512,7 @@ BOOL CALLBACK MainDialogProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPa | |||
5499 | if (wcsstr (vol, L"\\??\\") == vol) | 5512 | if (wcsstr (vol, L"\\??\\") == vol) |
5500 | vol += 4; | 5513 | vol += 4; |
5501 | 5514 | ||
5502 | _snprintf (volp, sizeof(volp), "%ls", vol); | 5515 | StringCbPrintfA (volp, sizeof(volp), "%ls", vol); |
5503 | 5516 | ||
5504 | if (IsVolumeDeviceHosted (volp)) | 5517 | if (IsVolumeDeviceHosted (volp)) |
5505 | { | 5518 | { |
@@ -5603,7 +5616,7 @@ BOOL CALLBACK MainDialogProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPa | |||
5603 | // No mounted volume at this drive letter | 5616 | // No mounted volume at this drive letter |
5604 | 5617 | ||
5605 | AppendMenuW (popup, MF_STRING, IDM_MOUNT_VOLUME, GetString ("IDM_MOUNT_VOLUME")); | 5618 | AppendMenuW (popup, MF_STRING, IDM_MOUNT_VOLUME, GetString ("IDM_MOUNT_VOLUME")); |
5606 | AppendMenu (popup, MF_SEPARATOR, 0, NULL); | 5619 | AppendMenu (popup, MF_SEPARATOR, 0, ""); |
5607 | AppendMenuW (popup, MF_STRING, IDPM_SELECT_FILE_AND_MOUNT, GetString ("SELECT_FILE_AND_MOUNT")); | 5620 | AppendMenuW (popup, MF_STRING, IDPM_SELECT_FILE_AND_MOUNT, GetString ("SELECT_FILE_AND_MOUNT")); |
5608 | AppendMenuW (popup, MF_STRING, IDPM_SELECT_DEVICE_AND_MOUNT, GetString ("SELECT_DEVICE_AND_MOUNT")); | 5621 | AppendMenuW (popup, MF_STRING, IDPM_SELECT_DEVICE_AND_MOUNT, GetString ("SELECT_DEVICE_AND_MOUNT")); |
5609 | break; | 5622 | break; |
@@ -5614,13 +5627,13 @@ BOOL CALLBACK MainDialogProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPa | |||
5614 | 5627 | ||
5615 | AppendMenuW (popup, MF_STRING, IDM_UNMOUNT_VOLUME, GetString ("DISMOUNT")); | 5628 | AppendMenuW (popup, MF_STRING, IDM_UNMOUNT_VOLUME, GetString ("DISMOUNT")); |
5616 | AppendMenuW (popup, MF_STRING, IDPM_OPEN_VOLUME, GetString ("OPEN")); | 5629 | AppendMenuW (popup, MF_STRING, IDPM_OPEN_VOLUME, GetString ("OPEN")); |
5617 | AppendMenu (popup, MF_SEPARATOR, 0, NULL); | 5630 | AppendMenu (popup, MF_SEPARATOR, 0, ""); |
5618 | AppendMenuW (popup, MF_STRING, IDPM_CHECK_FILESYS, GetString ("IDPM_CHECK_FILESYS")); | 5631 | AppendMenuW (popup, MF_STRING, IDPM_CHECK_FILESYS, GetString ("IDPM_CHECK_FILESYS")); |
5619 | AppendMenuW (popup, MF_STRING, IDPM_REPAIR_FILESYS, GetString ("IDPM_REPAIR_FILESYS")); | 5632 | AppendMenuW (popup, MF_STRING, IDPM_REPAIR_FILESYS, GetString ("IDPM_REPAIR_FILESYS")); |
5620 | AppendMenu (popup, MF_SEPARATOR, 0, NULL); | 5633 | AppendMenu (popup, MF_SEPARATOR, 0, ""); |
5621 | AppendMenuW (popup, MF_STRING, IDPM_ADD_TO_FAVORITES, GetString ("IDPM_ADD_TO_FAVORITES")); | 5634 | AppendMenuW (popup, MF_STRING, IDPM_ADD_TO_FAVORITES, GetString ("IDPM_ADD_TO_FAVORITES")); |
5622 | AppendMenuW (popup, MF_STRING, IDPM_ADD_TO_SYSTEM_FAVORITES, GetString ("IDPM_ADD_TO_SYSTEM_FAVORITES")); | 5635 | AppendMenuW (popup, MF_STRING, IDPM_ADD_TO_SYSTEM_FAVORITES, GetString ("IDPM_ADD_TO_SYSTEM_FAVORITES")); |
5623 | AppendMenu (popup, MF_SEPARATOR, 0, NULL); | 5636 | AppendMenu (popup, MF_SEPARATOR, 0, ""); |
5624 | AppendMenuW (popup, MF_STRING, IDM_VOLUME_PROPERTIES, GetString ("IDPM_PROPERTIES")); | 5637 | AppendMenuW (popup, MF_STRING, IDM_VOLUME_PROPERTIES, GetString ("IDPM_PROPERTIES")); |
5625 | break; | 5638 | break; |
5626 | 5639 | ||
@@ -5867,10 +5880,10 @@ BOOL CALLBACK MainDialogProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPa | |||
5867 | { | 5880 | { |
5868 | AppendMenuW (popup, MF_STRING, IDM_CHANGE_PASSWORD, GetString ("IDM_CHANGE_PASSWORD")); | 5881 | AppendMenuW (popup, MF_STRING, IDM_CHANGE_PASSWORD, GetString ("IDM_CHANGE_PASSWORD")); |
5869 | AppendMenuW (popup, MF_STRING, IDM_CHANGE_HEADER_KEY_DERIV_ALGO, GetString ("IDM_CHANGE_HEADER_KEY_DERIV_ALGO")); | 5882 | AppendMenuW (popup, MF_STRING, IDM_CHANGE_HEADER_KEY_DERIV_ALGO, GetString ("IDM_CHANGE_HEADER_KEY_DERIV_ALGO")); |
5870 | AppendMenu (popup, MF_SEPARATOR, 0, NULL); | 5883 | AppendMenu (popup, MF_SEPARATOR, 0, ""); |
5871 | AppendMenuW (popup, MF_STRING, IDM_ADD_REMOVE_VOL_KEYFILES, GetString ("IDM_ADD_REMOVE_VOL_KEYFILES")); | 5884 | AppendMenuW (popup, MF_STRING, IDM_ADD_REMOVE_VOL_KEYFILES, GetString ("IDM_ADD_REMOVE_VOL_KEYFILES")); |
5872 | AppendMenuW (popup, MF_STRING, IDM_REMOVE_ALL_KEYFILES_FROM_VOL, GetString ("IDM_REMOVE_ALL_KEYFILES_FROM_VOL")); | 5885 | AppendMenuW (popup, MF_STRING, IDM_REMOVE_ALL_KEYFILES_FROM_VOL, GetString ("IDM_REMOVE_ALL_KEYFILES_FROM_VOL")); |
5873 | AppendMenu (popup, MF_SEPARATOR, 0, NULL); | 5886 | AppendMenu (popup, MF_SEPARATOR, 0, ""); |
5874 | AppendMenuW (popup, MF_STRING, IDM_BACKUP_VOL_HEADER, GetString ("IDM_BACKUP_VOL_HEADER")); | 5887 | AppendMenuW (popup, MF_STRING, IDM_BACKUP_VOL_HEADER, GetString ("IDM_BACKUP_VOL_HEADER")); |
5875 | AppendMenuW (popup, MF_STRING, IDM_RESTORE_VOL_HEADER, GetString ("IDM_RESTORE_VOL_HEADER")); | 5888 | AppendMenuW (popup, MF_STRING, IDM_RESTORE_VOL_HEADER, GetString ("IDM_RESTORE_VOL_HEADER")); |
5876 | } | 5889 | } |
@@ -6250,9 +6263,9 @@ BOOL CALLBACK MainDialogProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPa | |||
6250 | // volPathHigher will contain the volume path selected in the main drive list | 6263 | // volPathHigher will contain the volume path selected in the main drive list |
6251 | wstring volPathHigher (prop.wszVolume); | 6264 | wstring volPathHigher (prop.wszVolume); |
6252 | 6265 | ||
6253 | ToSBCS (prop.wszVolume); | 6266 | ToSBCS (prop.wszVolume, sizeof(prop.wszVolume)); |
6254 | strcpy ((char *) volPathLowerW, volPathLower); | 6267 | StringCbCopyA ((char *) volPathLowerW, sizeof(volPathLowerW), volPathLower); |
6255 | ToUNICODE ((char *) volPathLowerW); | 6268 | ToUNICODE ((char *) volPathLowerW, sizeof(volPathLowerW)); |
6256 | 6269 | ||
6257 | if (strcmp (((memcmp ((char *) prop.wszVolume, "\\??\\", 4) == 0) ? (char *) prop.wszVolume + 4 : (char *) prop.wszVolume), volPathLower) != 0) | 6270 | if (strcmp (((memcmp ((char *) prop.wszVolume, "\\??\\", 4) == 0) ? (char *) prop.wszVolume + 4 : (char *) prop.wszVolume), volPathLower) != 0) |
6258 | { | 6271 | { |
@@ -6700,8 +6713,11 @@ void ExtractCommandLine (HWND hwndDlg, char *lpszCommandLine) | |||
6700 | KeyFile *kf; | 6713 | KeyFile *kf; |
6701 | RelativePath2Absolute (tmpPath); | 6714 | RelativePath2Absolute (tmpPath); |
6702 | kf = (KeyFile *) malloc (sizeof (KeyFile)); | 6715 | kf = (KeyFile *) malloc (sizeof (KeyFile)); |
6703 | strncpy (kf->FileName, tmpPath, sizeof (kf->FileName) - 1); | 6716 | if (kf) |
6704 | FirstCmdKeyFile = KeyFileAdd (FirstCmdKeyFile, kf); | 6717 | { |
6718 | StringCbCopyA (kf->FileName, sizeof(kf->FileName), tmpPath); | ||
6719 | FirstCmdKeyFile = KeyFileAdd (FirstCmdKeyFile, kf); | ||
6720 | } | ||
6705 | } | 6721 | } |
6706 | break; | 6722 | break; |
6707 | 6723 | ||
@@ -7025,7 +7041,7 @@ BOOL TaskBarIconAdd (HWND hwnd) | |||
7025 | | LR_SHARED | 7041 | | LR_SHARED |
7026 | | (nCurrentOS != WIN_2000 ? LR_DEFAULTCOLOR : LR_VGACOLOR)); // Windows 2000 cannot display more than 16 fixed colors in notification tray | 7042 | | (nCurrentOS != WIN_2000 ? LR_DEFAULTCOLOR : LR_VGACOLOR)); // Windows 2000 cannot display more than 16 fixed colors in notification tray |
7027 | 7043 | ||
7028 | wcscpy (tnid.szTip, L"VeraCrypt"); | 7044 | StringCbCopyW (tnid.szTip, sizeof(tnid.szTip), L"VeraCrypt"); |
7029 | 7045 | ||
7030 | return Shell_NotifyIconW (NIM_ADD, &tnid); | 7046 | return Shell_NotifyIconW (NIM_ADD, &tnid); |
7031 | } | 7047 | } |
@@ -7450,7 +7466,7 @@ void ChangeMainWindowVisibility () | |||
7450 | } | 7466 | } |
7451 | 7467 | ||
7452 | 7468 | ||
7453 | int BackupVolumeHeader (HWND hwndDlg, BOOL bRequireConfirmation, char *lpszVolume) | 7469 | int BackupVolumeHeader (HWND hwndDlg, BOOL bRequireConfirmation, const char *lpszVolume) |
7454 | { | 7470 | { |
7455 | int nStatus = ERR_OS_ERROR; | 7471 | int nStatus = ERR_OS_ERROR; |
7456 | wchar_t szTmp[4096]; | 7472 | wchar_t szTmp[4096]; |
@@ -7461,6 +7477,13 @@ int BackupVolumeHeader (HWND hwndDlg, BOOL bRequireConfirmation, char *lpszVolum | |||
7461 | byte temporaryKey[MASTER_KEYDATA_SIZE]; | 7477 | byte temporaryKey[MASTER_KEYDATA_SIZE]; |
7462 | byte originalK2[MASTER_KEYDATA_SIZE]; | 7478 | byte originalK2[MASTER_KEYDATA_SIZE]; |
7463 | 7479 | ||
7480 | if (!lpszVolume) | ||
7481 | { | ||
7482 | nStatus = ERR_OUTOFMEMORY; | ||
7483 | handleError (hwndDlg, nStatus); | ||
7484 | return nStatus; | ||
7485 | } | ||
7486 | |||
7464 | volume.VolumeIsOpen = FALSE; | 7487 | volume.VolumeIsOpen = FALSE; |
7465 | hiddenVolume.VolumeIsOpen = FALSE; | 7488 | hiddenVolume.VolumeIsOpen = FALSE; |
7466 | 7489 | ||
@@ -7560,7 +7583,7 @@ noHidden: | |||
7560 | goto error; | 7583 | goto error; |
7561 | } | 7584 | } |
7562 | 7585 | ||
7563 | swprintf (szTmp, GetString ("CONFIRM_VOL_HEADER_BAK"), lpszVolume); | 7586 | StringCbPrintfW (szTmp, sizeof(szTmp), GetString ("CONFIRM_VOL_HEADER_BAK"), lpszVolume); |
7564 | 7587 | ||
7565 | if (bRequireConfirmation | 7588 | if (bRequireConfirmation |
7566 | && (MessageBoxW (hwndDlg, szTmp, lpszTitle, YES_NO|MB_ICONQUESTION|MB_DEFBUTTON1) == IDNO)) | 7589 | && (MessageBoxW (hwndDlg, szTmp, lpszTitle, YES_NO|MB_ICONQUESTION|MB_DEFBUTTON1) == IDNO)) |
@@ -7672,7 +7695,7 @@ error: | |||
7672 | } | 7695 | } |
7673 | 7696 | ||
7674 | 7697 | ||
7675 | int RestoreVolumeHeader (HWND hwndDlg, char *lpszVolume) | 7698 | int RestoreVolumeHeader (HWND hwndDlg, const char *lpszVolume) |
7676 | { | 7699 | { |
7677 | int nDosLinkCreated = -1, nStatus = ERR_OS_ERROR; | 7700 | int nDosLinkCreated = -1, nStatus = ERR_OS_ERROR; |
7678 | char szDiskFile[TC_MAX_PATH], szCFDevice[TC_MAX_PATH]; | 7701 | char szDiskFile[TC_MAX_PATH], szCFDevice[TC_MAX_PATH]; |
@@ -7691,6 +7714,13 @@ int RestoreVolumeHeader (HWND hwndDlg, char *lpszVolume) | |||
7691 | LARGE_INTEGER headerOffset; | 7714 | LARGE_INTEGER headerOffset; |
7692 | CRYPTO_INFO *restoredCryptoInfo = NULL; | 7715 | CRYPTO_INFO *restoredCryptoInfo = NULL; |
7693 | 7716 | ||
7717 | if (!lpszVolume) | ||
7718 | { | ||
7719 | nStatus = ERR_OUTOFMEMORY; | ||
7720 | handleError (hwndDlg, nStatus); | ||
7721 | return nStatus; | ||
7722 | } | ||
7723 | |||
7694 | switch (IsSystemDevicePath (lpszVolume, hwndDlg, TRUE)) | 7724 | switch (IsSystemDevicePath (lpszVolume, hwndDlg, TRUE)) |
7695 | { | 7725 | { |
7696 | case 1: | 7726 | case 1: |
@@ -7750,7 +7780,7 @@ int RestoreVolumeHeader (HWND hwndDlg, char *lpszVolume) | |||
7750 | // Open the volume using backup header | 7780 | // Open the volume using backup header |
7751 | while (TRUE) | 7781 | while (TRUE) |
7752 | { | 7782 | { |
7753 | strncpy (PasswordDlgVolume, lpszVolume, sizeof (PasswordDlgVolume) - 1); | 7783 | StringCbCopyA (PasswordDlgVolume, sizeof(PasswordDlgVolume), lpszVolume); |
7754 | if (!AskVolumePassword (hwndDlg, &VolumePassword, NULL, FALSE)) | 7784 | if (!AskVolumePassword (hwndDlg, &VolumePassword, NULL, FALSE)) |
7755 | { | 7785 | { |
7756 | nStatus = ERR_SUCCESS; | 7786 | nStatus = ERR_SUCCESS; |
@@ -7806,7 +7836,7 @@ int RestoreVolumeHeader (HWND hwndDlg, char *lpszVolume) | |||
7806 | { | 7836 | { |
7807 | // Restore header from an external backup | 7837 | // Restore header from an external backup |
7808 | 7838 | ||
7809 | swprintf (szTmp, GetString ("CONFIRM_VOL_HEADER_RESTORE"), lpszVolume); | 7839 | StringCbPrintfW (szTmp, sizeof(szTmp), GetString ("CONFIRM_VOL_HEADER_RESTORE"), lpszVolume); |
7810 | 7840 | ||
7811 | if (MessageBoxW (hwndDlg, szTmp, lpszTitle, YES_NO|MB_ICONWARNING|MB_DEFBUTTON2) == IDNO) | 7841 | if (MessageBoxW (hwndDlg, szTmp, lpszTitle, YES_NO|MB_ICONWARNING|MB_DEFBUTTON2) == IDNO) |
7812 | { | 7842 | { |
@@ -7837,13 +7867,13 @@ int RestoreVolumeHeader (HWND hwndDlg, char *lpszVolume) | |||
7837 | goto error; | 7867 | goto error; |
7838 | } | 7868 | } |
7839 | 7869 | ||
7840 | CreateFullVolumePath (szDiskFile, lpszVolume, &bDevice); | 7870 | CreateFullVolumePath (szDiskFile, sizeof(szDiskFile), lpszVolume, &bDevice); |
7841 | 7871 | ||
7842 | if (bDevice == FALSE) | 7872 | if (bDevice == FALSE) |
7843 | strcpy (szCFDevice, szDiskFile); | 7873 | StringCbCopyA (szCFDevice, sizeof(szCFDevice), szDiskFile); |
7844 | else | 7874 | else |
7845 | { | 7875 | { |
7846 | nDosLinkCreated = FakeDosNameForDevice (szDiskFile, szDosDevice, szCFDevice, FALSE); | 7876 | nDosLinkCreated = FakeDosNameForDevice (szDiskFile, szDosDevice, sizeof(szDosDevice),szCFDevice, sizeof(szCFDevice),FALSE); |
7847 | if (nDosLinkCreated != 0) | 7877 | if (nDosLinkCreated != 0) |
7848 | goto error; | 7878 | goto error; |
7849 | } | 7879 | } |
@@ -8302,12 +8332,12 @@ static BOOL CALLBACK SecurityTokenPreferencesDlgProc (HWND hwndDlg, UINT msg, WP | |||
8302 | else | 8332 | else |
8303 | { | 8333 | { |
8304 | char prevSecurityTokenLibraryPath[MAX_PATH]; | 8334 | char prevSecurityTokenLibraryPath[MAX_PATH]; |
8305 | strcpy (prevSecurityTokenLibraryPath, SecurityTokenLibraryPath); | 8335 | StringCbCopyA (prevSecurityTokenLibraryPath, sizeof(prevSecurityTokenLibraryPath), SecurityTokenLibraryPath); |
8306 | strcpy (SecurityTokenLibraryPath, securityTokenLibraryPath); | 8336 | StringCbCopyA (SecurityTokenLibraryPath, sizeof(SecurityTokenLibraryPath), securityTokenLibraryPath); |
8307 | 8337 | ||
8308 | if (!InitSecurityTokenLibrary()) | 8338 | if (!InitSecurityTokenLibrary()) |
8309 | { | 8339 | { |
8310 | strcpy (SecurityTokenLibraryPath, prevSecurityTokenLibraryPath); | 8340 | StringCbCopyA (SecurityTokenLibraryPath, sizeof(SecurityTokenLibraryPath), prevSecurityTokenLibraryPath); |
8311 | return 1; | 8341 | return 1; |
8312 | } | 8342 | } |
8313 | } | 8343 | } |
@@ -8393,7 +8423,7 @@ static BOOL CALLBACK SecurityTokenPreferencesDlgProc (HWND hwndDlg, UINT msg, WP | |||
8393 | 8423 | ||
8394 | Info ("SELECT_PKCS11_MODULE_HELP"); | 8424 | Info ("SELECT_PKCS11_MODULE_HELP"); |
8395 | 8425 | ||
8396 | wsprintfW (browseFilter, L"%ls (*.dll)%c*.dll%c%c", GetString ("DLL_FILES"), 0, 0, 0); | 8426 | StringCbPrintfW (browseFilter, sizeof(browseFilter), L"%ls (*.dll)%c*.dll%c%c", GetString ("DLL_FILES"), 0, 0, 0); |
8397 | GetSystemDirectory (systemDir, sizeof (systemDir)); | 8427 | GetSystemDirectory (systemDir, sizeof (systemDir)); |
8398 | 8428 | ||
8399 | if (BrowseFilesInDir (hwndDlg, "SELECT_PKCS11_MODULE", systemDir, securityTokenLibraryPath, TRUE, FALSE, browseFilter)) | 8429 | if (BrowseFilesInDir (hwndDlg, "SELECT_PKCS11_MODULE", systemDir, securityTokenLibraryPath, TRUE, FALSE, browseFilter)) |