VeraCrypt
aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/Common/Crypto.c22
-rw-r--r--src/Common/Crypto.h4
-rw-r--r--src/Common/Password.c32
-rw-r--r--src/Common/Password.h2
4 files changed, 39 insertions, 21 deletions
diff --git a/src/Common/Crypto.c b/src/Common/Crypto.c
index 3b87572..dd30e48 100644
--- a/src/Common/Crypto.c
+++ b/src/Common/Crypto.c
@@ -321,24 +321,28 @@ Cipher *CipherGet (int id)
return NULL;
}
-char *CipherGetName (int cipherId)
+const char *CipherGetName (int cipherId)
{
- return CipherGet (cipherId) -> Name;
+ Cipher* pCipher = CipherGet (cipherId);
+ return pCipher? pCipher -> Name : "";
}
int CipherGetBlockSize (int cipherId)
{
- return CipherGet (cipherId) -> BlockSize;
+ Cipher* pCipher = CipherGet (cipherId);
+ return pCipher? pCipher -> BlockSize : 0;
}
int CipherGetKeySize (int cipherId)
{
- return CipherGet (cipherId) -> KeySize;
+ Cipher* pCipher = CipherGet (cipherId);
+ return pCipher? pCipher -> KeySize : 0;
}
int CipherGetKeyScheduleSize (int cipherId)
{
- return CipherGet (cipherId) -> KeyScheduleSize;
+ Cipher* pCipher = CipherGet (cipherId);
+ return pCipher? pCipher -> KeyScheduleSize : 0;
}
#ifndef TC_WINDOWS_BOOT
@@ -715,15 +719,17 @@ int HashGetIdByName (char *name)
}
-char *HashGetName (int hashId)
+const char *HashGetName (int hashId)
{
- return HashGet (hashId) -> Name;
+ Hash* pHash = HashGet(hashId);
+ return pHash? pHash -> Name : "";
}
BOOL HashIsDeprecated (int hashId)
{
- return HashGet (hashId) -> Deprecated;
+ Hash* pHash = HashGet(hashId);
+ return pHash? pHash -> Deprecated : FALSE;
}
diff --git a/src/Common/Crypto.h b/src/Common/Crypto.h
index dd35eec..4f47ec0 100644
--- a/src/Common/Crypto.h
+++ b/src/Common/Crypto.h
@@ -269,7 +269,7 @@ int CipherGetBlockSize (int cipher);
int CipherGetKeySize (int cipher);
int CipherGetKeyScheduleSize (int cipher);
BOOL CipherSupportsIntraDataUnitParallelization (int cipher);
-char * CipherGetName (int cipher);
+const char * CipherGetName (int cipher);
int CipherInit (int cipher, unsigned char *key, unsigned char *ks);
int EAInit (int ea, unsigned char *key, unsigned char *ks);
@@ -302,7 +302,7 @@ int EAGetPreviousCipher (int ea, int previousCipherId);
int EAIsFormatEnabled (int ea);
BOOL EAIsModeSupported (int ea, int testedMode);
-char *HashGetName (int hash_algo_id);
+const char *HashGetName (int hash_algo_id);
BOOL HashIsDeprecated (int hashId);
int GetMaxPkcs5OutSize (void);
diff --git a/src/Common/Password.c b/src/Common/Password.c
index 506a18c..ca86f9c 100644
--- a/src/Common/Password.c
+++ b/src/Common/Password.c
@@ -66,15 +66,20 @@ BOOL CheckPasswordCharEncoding (HWND hPassword, Password *ptrPw)
if (hPassword == NULL)
{
- unsigned char *pw;
- len = ptrPw->Length;
- pw = (unsigned char *) ptrPw->Text;
-
- for (i = 0; i < len; i++)
+ if (ptrPw)
{
- if (pw[i] >= 0x7f || pw[i] < 0x20) // A non-ASCII or non-printable character?
- return FALSE;
+ unsigned char *pw;
+ len = ptrPw->Length;
+ pw = (unsigned char *) ptrPw->Text;
+
+ for (i = 0; i < len; i++)
+ {
+ if (pw[i] >= 0x7f || pw[i] < 0x20) // A non-ASCII or non-printable character?
+ return FALSE;
+ }
}
+ else
+ return FALSE;
}
else
{
@@ -114,7 +119,7 @@ BOOL CheckPasswordLength (HWND hwndDlg, HWND hwndItem)
return TRUE;
}
-int ChangePwd (char *lpszVolume, Password *oldPassword, Password *newPassword, int pkcs5, HWND hwndDlg)
+int ChangePwd (const char *lpszVolume, Password *oldPassword, Password *newPassword, int pkcs5, HWND hwndDlg)
{
int nDosLinkCreated = 1, nStatus = ERR_OS_ERROR;
char szDiskFile[TC_MAX_PATH], szCFDevice[TC_MAX_PATH];
@@ -138,9 +143,16 @@ int ChangePwd (char *lpszVolume, Password *oldPassword, Password *newPassword, i
if (oldPassword->Length == 0 || newPassword->Length == 0) return -1;
+ if (!lpszVolume)
+ {
+ nStatus = ERR_OUTOFMEMORY;
+ handleError (hwndDlg, nStatus);
+ return nStatus;
+ }
+
WaitCursor ();
- CreateFullVolumePath (szDiskFile, lpszVolume, &bDevice);
+ CreateFullVolumePath (szDiskFile, sizeof(szDiskFile), lpszVolume, &bDevice);
if (bDevice == FALSE)
{
@@ -148,7 +160,7 @@ int ChangePwd (char *lpszVolume, Password *oldPassword, Password *newPassword, i
}
else
{
- nDosLinkCreated = FakeDosNameForDevice (szDiskFile, szDosDevice, szCFDevice, FALSE);
+ nDosLinkCreated = FakeDosNameForDevice (szDiskFile, szDosDevice, sizeof(szDosDevice), szCFDevice, sizeof(szCFDevice),FALSE);
if (nDosLinkCreated != 0)
goto error;
diff --git a/src/Common/Password.h b/src/Common/Password.h
index 25028b1..d4f1f92 100644
--- a/src/Common/Password.h
+++ b/src/Common/Password.h
@@ -35,7 +35,7 @@ typedef struct
void VerifyPasswordAndUpdate ( HWND hwndDlg , HWND hButton , HWND hPassword , HWND hVerify , unsigned char *szPassword , char *szVerify, BOOL keyFilesEnabled );
BOOL CheckPasswordLength (HWND hwndDlg, HWND hwndItem);
BOOL CheckPasswordCharEncoding (HWND hPassword, Password *ptrPw);
-int ChangePwd (char *lpszVolume, Password *oldPassword, Password *newPassword, int pkcs5, HWND hwndDlg);
+int ChangePwd (const char *lpszVolume, Password *oldPassword, Password *newPassword, int pkcs5, HWND hwndDlg);
#endif // defined(_WIN32) && !defined(TC_WINDOWS_DRIVER)