VeraCrypt
aboutsummaryrefslogtreecommitdiff
path: root/src/Common/Password.c
diff options
context:
space:
mode:
authorMounir IDRASSI <mounir.idrassi@idrix.fr>2014-07-14 17:32:57 +0200
committerMounir IDRASSI <mounir.idrassi@idrix.fr>2014-11-08 23:21:21 +0100
commitbbc738c490bcd691151c28f971e0e153777fb255 (patch)
tree81d6c3dbca12021fc8dd9563462c19836f5591a6 /src/Common/Password.c
parent8bf58486af14c662ed63abea093886bfcf2ddbe5 (diff)
downloadVeraCrypt-bbc738c490bcd691151c28f971e0e153777fb255.tar.gz
VeraCrypt-bbc738c490bcd691151c28f971e0e153777fb255.zip
Static Code Analysis : Add various NULL pointers checks
Diffstat (limited to 'src/Common/Password.c')
-rw-r--r--src/Common/Password.c32
1 files changed, 22 insertions, 10 deletions
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)
66 66
67 if (hPassword == NULL) 67 if (hPassword == NULL)
68 { 68 {
69 unsigned char *pw; 69 if (ptrPw)
70 len = ptrPw->Length;
71 pw = (unsigned char *) ptrPw->Text;
72
73 for (i = 0; i < len; i++)
74 { 70 {
75 if (pw[i] >= 0x7f || pw[i] < 0x20) // A non-ASCII or non-printable character? 71 unsigned char *pw;
76 return FALSE; 72 len = ptrPw->Length;
73 pw = (unsigned char *) ptrPw->Text;
74
75 for (i = 0; i < len; i++)
76 {
77 if (pw[i] >= 0x7f || pw[i] < 0x20) // A non-ASCII or non-printable character?
78 return FALSE;
79 }
77 } 80 }
81 else
82 return FALSE;
78 } 83 }
79 else 84 else
80 { 85 {
@@ -114,7 +119,7 @@ BOOL CheckPasswordLength (HWND hwndDlg, HWND hwndItem)
114 return TRUE; 119 return TRUE;
115} 120}
116 121
117int ChangePwd (char *lpszVolume, Password *oldPassword, Password *newPassword, int pkcs5, HWND hwndDlg) 122int ChangePwd (const char *lpszVolume, Password *oldPassword, Password *newPassword, int pkcs5, HWND hwndDlg)
118{ 123{
119 int nDosLinkCreated = 1, nStatus = ERR_OS_ERROR; 124 int nDosLinkCreated = 1, nStatus = ERR_OS_ERROR;
120 char szDiskFile[TC_MAX_PATH], szCFDevice[TC_MAX_PATH]; 125 char szDiskFile[TC_MAX_PATH], szCFDevice[TC_MAX_PATH];
@@ -138,9 +143,16 @@ int ChangePwd (char *lpszVolume, Password *oldPassword, Password *newPassword, i
138 143
139 if (oldPassword->Length == 0 || newPassword->Length == 0) return -1; 144 if (oldPassword->Length == 0 || newPassword->Length == 0) return -1;
140 145
146 if (!lpszVolume)
147 {
148 nStatus = ERR_OUTOFMEMORY;
149 handleError (hwndDlg, nStatus);
150 return nStatus;
151 }
152
141 WaitCursor (); 153 WaitCursor ();
142 154
143 CreateFullVolumePath (szDiskFile, lpszVolume, &bDevice); 155 CreateFullVolumePath (szDiskFile, sizeof(szDiskFile), lpszVolume, &bDevice);
144 156
145 if (bDevice == FALSE) 157 if (bDevice == FALSE)
146 { 158 {
@@ -148,7 +160,7 @@ int ChangePwd (char *lpszVolume, Password *oldPassword, Password *newPassword, i
148 } 160 }
149 else 161 else
150 { 162 {
151 nDosLinkCreated = FakeDosNameForDevice (szDiskFile, szDosDevice, szCFDevice, FALSE); 163 nDosLinkCreated = FakeDosNameForDevice (szDiskFile, szDosDevice, sizeof(szDosDevice), szCFDevice, sizeof(szCFDevice),FALSE);
152 164
153 if (nDosLinkCreated != 0) 165 if (nDosLinkCreated != 0)
154 goto error; 166 goto error;