VeraCrypt
aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMounir IDRASSI <mounir.idrassi@idrix.fr>2016-08-16 02:04:31 (GMT)
committerMounir IDRASSI <mounir.idrassi@idrix.fr>2016-08-16 08:04:07 (GMT)
commitce76957a10070c132a8adfbe2e7d3f12395b4caa (patch)
treedf9ede22756dc23ff9e19555ccfba1c3db62cc77
parent1bf219b0dca05edf337b322162169209cd224b6c (diff)
downloadVeraCrypt-ce76957a10070c132a8adfbe2e7d3f12395b4caa.zip
VeraCrypt-ce76957a10070c132a8adfbe2e7d3f12395b4caa.tar.gz
Windows: Fix various issues detected by static analysis.
-rw-r--r--src/Common/BootEncryption.cpp9
-rw-r--r--src/Common/XZip.cpp2
-rw-r--r--src/Crypto/GostCipher.c26
-rw-r--r--src/Crypto/GostCipher.h6
-rw-r--r--src/Crypto/Streebog.c4
-rw-r--r--src/Crypto/cpu.c2
-rw-r--r--src/Format/Tcformat.c16
-rw-r--r--src/Mount/Mount.c2
8 files changed, 37 insertions, 30 deletions
diff --git a/src/Common/BootEncryption.cpp b/src/Common/BootEncryption.cpp
index 3b799d0..984402d 100644
--- a/src/Common/BootEncryption.cpp
+++ b/src/Common/BootEncryption.cpp
@@ -198,6 +198,9 @@ namespace VeraCrypt
if (bstr)
{
CComBSTR inputBstr;
+ CComBSTR fileBstr;
+ fileBstr.Attach (bstr);
+
if (input && inputBstr.AppendBytes ((const char *) input, inputSize) != S_OK)
{
SetLastError (ERROR_INVALID_PARAMETER);
@@ -211,8 +214,6 @@ namespace VeraCrypt
return FALSE;
}
- CComBSTR fileBstr;
- fileBstr.Attach (bstr);
result = ElevatedComInstance->DeviceIoControl (readOnly, device, fileBstr, dwIoControlCode, inputBstr, &outputBstr);
if (output)
@@ -2071,6 +2072,8 @@ namespace VeraCrypt
EfiBoot::EfiBoot() {
ZeroMemory(EfiBootPartPath, sizeof(EfiBootPartPath));
ZeroMemory (systemPartitionPath, sizeof (systemPartitionPath));
+ ZeroMemory (&sdn, sizeof (sdn));
+ ZeroMemory (&partInfo, sizeof (partInfo));
m_bMounted = false;
}
@@ -2288,7 +2291,7 @@ namespace VeraCrypt
wchar_t varName[256];
StringCchPrintfW(varName, ARRAYSIZE (varName), L"%s%04X", type == NULL ? L"Boot" : type, statrtOrderNum);
SetFirmwareEnvironmentVariable(varName, EfiVarGuid, startVar, varSize);
- delete startVar;
+ delete [] startVar;
// Update order
wstring order = L"Order";
diff --git a/src/Common/XZip.cpp b/src/Common/XZip.cpp
index 9ce6de5..be6d27e 100644
--- a/src/Common/XZip.cpp
+++ b/src/Common/XZip.cpp
@@ -686,7 +686,7 @@ typedef struct zlist {
char iname[MAX_PATH]; // Internal file name after cleanup
char zname[MAX_PATH]; // External version of internal name
int mark; // Marker for files to operate on
- int trash; // Marker for files to delete
+ // int trash; // Marker for files to delete
int dosflag; // Set to force MSDOS file attributes
struct zlist far *nxt; // Pointer to next header in list
} TZipFileInfo;
diff --git a/src/Crypto/GostCipher.c b/src/Crypto/GostCipher.c
index a745210..ec09bdd 100644
--- a/src/Crypto/GostCipher.c
+++ b/src/Crypto/GostCipher.c
@@ -75,19 +75,19 @@ static void xor_s_box(byte s_box[8][16], byte *seed)
int i;
for (i = 0; i < 16; i++)
{
- s_box[1][i] ^= (seed[ (i * 4) + 0 ] ) & 0xF;
- s_box[2][i] ^= (seed[ (i * 4) + 0 ]>>4) & 0xF;
- s_box[3][i] ^= (seed[ (i * 4) + 1 ] ) & 0xF;
- s_box[4][i] ^= (seed[ (i * 4) + 1 ]>>4) & 0xF;
- s_box[5][i] ^= (seed[ (i * 4) + 2 ] ) & 0xF;
- s_box[6][i] ^= (seed[ (i * 4) + 2 ]>>4) & 0xF;
- s_box[7][i] ^= (seed[ (i * 4) + 3 ] ) & 0xF;
- s_box[8][i] ^= (seed[ (i * 4) + 3 ]>>4) & 0xF;
+ s_box[0][i] ^= (seed[ (i * 4) + 0 ] ) & 0xF;
+ s_box[1][i] ^= (seed[ (i * 4) + 0 ]>>4) & 0xF;
+ s_box[2][i] ^= (seed[ (i * 4) + 1 ] ) & 0xF;
+ s_box[3][i] ^= (seed[ (i * 4) + 1 ]>>4) & 0xF;
+ s_box[4][i] ^= (seed[ (i * 4) + 2 ] ) & 0xF;
+ s_box[5][i] ^= (seed[ (i * 4) + 2 ]>>4) & 0xF;
+ s_box[6][i] ^= (seed[ (i * 4) + 3 ] ) & 0xF;
+ s_box[7][i] ^= (seed[ (i * 4) + 3 ]>>4) & 0xF;
}
}
#endif
-void gost_set_key(byte *key, gost_kds *ks)
+void gost_set_key(const byte *key, gost_kds *ks)
{
#ifdef GOST_DYNAMIC_SBOXES
STREEBOG_CTX sctx;
@@ -228,11 +228,11 @@ void gost_decrypt_block(uint64 in_, uint64* out_, gost_kds* kds) {
}
#if defined(_M_AMD64)
-void gost_encrypt_128_CBC_asm(byte *in, byte *out, gost_kds *ks, uint64 count);
-void gost_decrypt_128_CBC_asm(byte *in, byte *out, gost_kds *ks, uint64 count);
+void gost_encrypt_128_CBC_asm(const byte *in, byte *out, gost_kds *ks, uint64 count);
+void gost_decrypt_128_CBC_asm(const byte *in, byte *out, gost_kds *ks, uint64 count);
#endif
-void gost_encrypt(byte *in, byte *out, gost_kds *ks, int count) {
+void gost_encrypt(const byte *in, byte *out, gost_kds *ks, int count) {
#if defined(_M_AMD64)
gost_encrypt_128_CBC_asm(in, out, ks, (uint64)count);
#else
@@ -249,7 +249,7 @@ void gost_encrypt(byte *in, byte *out, gost_kds *ks, int count) {
#endif
}
-void gost_decrypt(byte *in, byte *out, gost_kds *ks, int count) {
+void gost_decrypt(const byte *in, byte *out, gost_kds *ks, int count) {
#if defined(_M_AMD64)
gost_decrypt_128_CBC_asm(in, out, ks, (uint64)count);
#else
diff --git a/src/Crypto/GostCipher.h b/src/Crypto/GostCipher.h
index 9b9e18b..35c6537 100644
--- a/src/Crypto/GostCipher.h
+++ b/src/Crypto/GostCipher.h
@@ -49,9 +49,9 @@ typedef struct gost_kds
#define GOST_KS (sizeof(gost_kds))
-void gost_encrypt(byte *in, byte *out, gost_kds *ks, int count);
-void gost_decrypt(byte *in, byte *out, gost_kds *ks, int count);
-void gost_set_key(byte *key, gost_kds *ks);
+void gost_encrypt(const byte *in, byte *out, gost_kds *ks, int count);
+void gost_decrypt(const byte *in, byte *out, gost_kds *ks, int count);
+void gost_set_key(const byte *key, gost_kds *ks);
#else
#define GOST_KS (0)
diff --git a/src/Crypto/Streebog.c b/src/Crypto/Streebog.c
index 9430bfa..d13d58d 100644
--- a/src/Crypto/Streebog.c
+++ b/src/Crypto/Streebog.c
@@ -2328,9 +2328,9 @@ stage3(STREEBOG_CTX *CTX)
memset(buf, 0x00, sizeof buf);
#ifndef __GOST3411_BIG_ENDIAN__
- buf[0] = CTX->bufsize << 3;
+ buf[0] = ((unsigned long long) CTX->bufsize) << 3;
#else
- buf[0] = BSWAP64(CTX->bufsize << 3);
+ buf[0] = BSWAP64(((unsigned long long) CTX->bufsize) << 3);
#endif
pad(CTX);
diff --git a/src/Crypto/cpu.c b/src/Crypto/cpu.c
index c358088..35fd36f 100644
--- a/src/Crypto/cpu.c
+++ b/src/Crypto/cpu.c
@@ -279,7 +279,7 @@ static int Detect_MS_HyperV_AES ()
void DetectX86Features()
{
- uint32 cpuid[4], cpuid1[4];
+ uint32 cpuid[4] = {0}, cpuid1[4] = {0};
if (!CpuId(0, cpuid))
return;
if (!CpuId(1, cpuid1))
diff --git a/src/Format/Tcformat.c b/src/Format/Tcformat.c
index 31140fd..66ec3ac 100644
--- a/src/Format/Tcformat.c
+++ b/src/Format/Tcformat.c
@@ -9206,17 +9206,19 @@ void ExtractCommandLine (HWND hwndDlg, wchar_t *lpszCommandLine)
{
wchar_t szTmp [TC_MAX_PATH + 8000] = {0};
- GetArgumentValue (lpszCommandLineArgs, &i, nNoCommandLineArgs, szTmp, ARRAYSIZE (szTmp));
-
- if (wcslen (szTmp) < 1)
+ if ((HAS_ARGUMENT == GetArgumentValue (lpszCommandLineArgs, &i, nNoCommandLineArgs, szTmp, ARRAYSIZE (szTmp)))
+ && (wcslen (szTmp) >= 1)
+ )
+ {
+ memset (szFileName, 0, sizeof (szFileName));
+ StringCbCopyW (szFileName, sizeof (szFileName), szTmp);
+ DirectNonSysInplaceDecStartMode = TRUE;
+ }
+ else
{
// No valid volume path specified as command-line parameter
AbortProcess ("ERR_PARAMETER_INCORRECT");
}
-
- memset (szFileName, 0, sizeof (szFileName));
- StringCbCopyW (szFileName, sizeof (szFileName), szTmp);
- DirectNonSysInplaceDecStartMode = TRUE;
}
break;
diff --git a/src/Mount/Mount.c b/src/Mount/Mount.c
index f725d32..d5c578d 100644
--- a/src/Mount/Mount.c
+++ b/src/Mount/Mount.c
@@ -10980,6 +10980,8 @@ static BOOL CALLBACK BootLoaderPreferencesDlgProc (HWND hwndDlg, UINT msg, WPARA
CheckDlgButton (hwndDlg, IDC_DISABLE_BOOT_LOADER_PIM_PROMPT, BST_UNCHECKED);
}
+ break;
+
case IDC_DISABLE_BOOT_LOADER_OUTPUT:
if ((IsDlgButtonChecked (hwndDlg, IDC_DISABLE_BOOT_LOADER_OUTPUT))
&& AskWarnYesNo ("CUSTOM_BOOT_LOADER_MESSAGE_PROMPT", hwndDlg) == IDNO)