mirror of
https://github.com/stefanberger/libtpms
synced 2026-08-07 19:47:22 +00:00
tpm2: fix GCC 15 stringop-overflow error in MakeIv
When compiling with GCC 15 using `CFLAGS=-march=x86-64-v4`, the compiler's
aggressively optimized vectorizer triggers a false-positive
-Wstringop-overflow error. Because x86-64-v4 enables wide AVX-512 registers,
the compiler misinterprets the loop unrolling and warns that a 64-byte
vector write is overflowing the destination buffer:
```
tpm2/TPMCmd/tpm/src/crypt/AlgorithmTests.c:158:17: error:
writing 64 bytes into a region of size 15 [-Werror=stringop-overflow=]
158 | *iv = i;
```
This fixes the warning by marking the `iv` output pointer parameter as
`volatile`. This inhibits the over-aggressive loop vectorization on this
specific buffer, silencing the compiler error without changing the
underlying logic.
Signed-off-by: Arthur Gautier <arthur.gautier@arista.com>
This commit is contained in:
parent
e7a4061087
commit
2d9b00c4e4
@ -138,9 +138,9 @@ TestSMAC(
|
||||
|
||||
//*** MakeIv()
|
||||
// Internal function to make the appropriate IV depending on the mode.
|
||||
static UINT32 MakeIv(TPM_ALG_ID mode, // IN: symmetric mode
|
||||
UINT32 size, // IN: block size of the algorithm
|
||||
BYTE* iv // OUT: IV to fill in
|
||||
static UINT32 MakeIv(TPM_ALG_ID mode, // IN: symmetric mode
|
||||
UINT32 size, // IN: block size of the algorithm
|
||||
volatile BYTE* iv // OUT: IV to fill in; 'volatile' for gcc15
|
||||
)
|
||||
{
|
||||
BYTE i;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user