fix warnings and UB (#1164)

* Crypto: fix warning mismatched bound

../Crypto/cpu.c:67:32: warning: argument 2 of type 'uint32[4]'
{aka 'unsigned int[4]'} with mismatched bound [-Warray-parameter=]
   67 | int CpuId(uint32 input, uint32 output[4])
      |                         ~~~~~~~^~~~~~~~~
In file included from ../Crypto/cpu.c:3:
../Crypto/cpu.h:236:33: note: previously declared as 'uint32 *'
{aka 'unsigned int *'}
  236 | int CpuId(uint32 input, uint32 *output);

Signed-off-by: Vasiliy Kovalev <kovalev@altlinux.org>

* Core/Unix: fix warning ignoring return value

Unix/CoreUnix.cpp: In member function 'virtual std::shared_ptr<VeraCrypt:\
:VolumeInfo> VeraCrypt::CoreUnix::MountVolume(VeraCrypt::MountOptions&)':
Unix/CoreUnix.cpp:682:55: warning: ignoring return value of
'int chown(const char*, __uid_t, __gid_t)' declared with attribute
'warn_unused_result' [-Wunused-result]
  682 |     chown (mountPoint.c_str(), GetRealUserId(), GetRealGroupId());
      |     ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Signed-off-by: Vasiliy Kovalev <kovalev@altlinux.org>

* Main/Forms: fix warning cast to pointer from integer of different size

Forms/MainFrame.cpp: In member function 'void VeraCrypt::MainFrame:\
:UpdateVolumeList()':

Forms/MainFrame.cpp:1718:106: warning: cast to pointer from integer of
different size [-Wint-to-pointer-cast]
 1718 |       Gui->InsertToListCtrl (SlotListCtrl, ++prevItemIndex,
        fields, 0, (void *) volume->SlotNumber);
      |            ^~~~~~~~~~~~~~~~~~~~~~~~~~~

Forms/MainFrame.cpp:1753:114: warning: cast to pointer from integer of
different size [-Wint-to-pointer-cast]
 1753 |       Gui->InsertToListCtrl (SlotListCtrl, ++prevItemIndex,
        fields, 0, (void *) slotNumber);
      |            ^~~~~~~~~~~~~~~~~~~

Signed-off-by: Vasiliy Kovalev <kovalev@altlinux.org>

* Crypto: fix undefined behavior signed integer overflow

In function 'twofish_set_key':
cc1: warning: iteration 4 invokes undefined behavior
[-Waggressive-loop-optimizations]
../Crypto/Twofish.c:626:23: note: within this loop
  626 |         for (i = 0; i != 40; i += 2)
      |                     ~~^~~~~

Signed-off-by: Vasiliy Kovalev <kovalev@altlinux.org>

---------

Signed-off-by: Vasiliy Kovalev <kovalev@altlinux.org>
Co-authored-by: Vasiliy Kovalev <kovalev@altlinux.org>
This commit is contained in:
kovalev0 2023-08-05 00:49:11 +03:00 committed by GitHub
parent 32e9703905
commit 5a6b445f0e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 8 additions and 5 deletions

View File

@ -22,6 +22,9 @@
#include "Driver/Fuse/FuseService.h" #include "Driver/Fuse/FuseService.h"
#include "Volume/VolumePasswordCache.h" #include "Volume/VolumePasswordCache.h"
template<typename T>
inline void ignore_result(const T & /* unused result */) {}
namespace VeraCrypt namespace VeraCrypt
{ {
#ifdef TC_LINUX #ifdef TC_LINUX
@ -691,7 +694,7 @@ namespace VeraCrypt
{ {
try try
{ {
chown (mountPoint.c_str(), GetRealUserId(), GetRealGroupId()); ignore_result(chown (mountPoint.c_str(), GetRealUserId(), GetRealGroupId()));
} catch (...) { } } catch (...) { }
} }
} }

View File

@ -607,7 +607,7 @@ void twofish_set_key(TwofishInstance *instance, const u4byte in_key[])
byte S8[16]; byte S8[16];
uint32 S32[4]; uint32 S32[4];
} us; } us;
int i; unsigned int i;
const byte* key = (const byte*) in_key; const byte* key = (const byte*) in_key;
us.S32[0] = RS[0][key[0]] ^ RS[1][key[1]] ^ RS[2][key[2]] ^ RS[3][key[3]] ^ RS[4][key[4]] ^ RS[5][key[5]] ^ RS[6][key[6]] ^ RS[7][key[7]]; us.S32[0] = RS[0][key[0]] ^ RS[1][key[1]] ^ RS[2][key[2]] ^ RS[3][key[3]] ^ RS[4][key[4]] ^ RS[5][key[5]] ^ RS[6][key[6]] ^ RS[7][key[7]];

View File

@ -238,7 +238,7 @@ extern volatile int g_isIntel;
extern volatile int g_isAMD; extern volatile int g_isAMD;
extern volatile uint32 g_cacheLineSize; extern volatile uint32 g_cacheLineSize;
void DetectX86Features(); // must be called at the start of the program/driver void DetectX86Features(); // must be called at the start of the program/driver
int CpuId(uint32 input, uint32 *output); int CpuId(uint32 input, uint32 output[4]);
// disable all CPU extended features (e.g. SSE, AVX, AES) that may have // disable all CPU extended features (e.g. SSE, AVX, AES) that may have
// been enabled by DetectX86Features. // been enabled by DetectX86Features.
void DisableCPUExtendedFeatures (); void DisableCPUExtendedFeatures ();

View File

@ -1700,7 +1700,7 @@ namespace VeraCrypt
bool slotUpdated = false; bool slotUpdated = false;
if (itemIndex == -1) if (itemIndex == -1)
{ {
Gui->InsertToListCtrl (SlotListCtrl, ++prevItemIndex, fields, 0, (void *) volume->SlotNumber); Gui->InsertToListCtrl (SlotListCtrl, ++prevItemIndex, fields, 0, (void *)(intptr_t) volume->SlotNumber);
OnListItemInserted (prevItemIndex); OnListItemInserted (prevItemIndex);
listChanged |= true; listChanged |= true;
@ -1735,7 +1735,7 @@ namespace VeraCrypt
{ {
if (itemIndex == -1) if (itemIndex == -1)
{ {
Gui->InsertToListCtrl (SlotListCtrl, ++prevItemIndex, fields, 0, (void *) slotNumber); Gui->InsertToListCtrl (SlotListCtrl, ++prevItemIndex, fields, 0, (void *)(intptr_t) slotNumber);
OnListItemInserted (prevItemIndex); OnListItemInserted (prevItemIndex);
listChanged |= true; listChanged |= true;
} }