diff options
author | Mounir IDRASSI <mounir.idrassi@idrix.fr> | 2014-07-14 17:32:57 +0200 |
---|---|---|
committer | Mounir IDRASSI <mounir.idrassi@idrix.fr> | 2014-11-08 23:21:21 +0100 |
commit | bbc738c490bcd691151c28f971e0e153777fb255 (patch) | |
tree | 81d6c3dbca12021fc8dd9563462c19836f5591a6 | |
parent | 8bf58486af14c662ed63abea093886bfcf2ddbe5 (diff) | |
download | VeraCrypt-bbc738c490bcd691151c28f971e0e153777fb255.tar.gz VeraCrypt-bbc738c490bcd691151c28f971e0e153777fb255.zip |
Static Code Analysis : Add various NULL pointers checks
-rw-r--r-- | src/Common/Crypto.c | 22 | ||||
-rw-r--r-- | src/Common/Crypto.h | 4 | ||||
-rw-r--r-- | src/Common/Password.c | 32 | ||||
-rw-r--r-- | src/Common/Password.h | 2 |
4 files changed, 39 insertions, 21 deletions
diff --git a/src/Common/Crypto.c b/src/Common/Crypto.c index 3b87572a..dd30e488 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 dd35eeca..4f47ec04 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 506a18c5..ca86f9c4 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 25028b11..d4f1f928 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)
|