1
0
mirror of https://github.com/f4exb/sdrangel.git synced 2026-07-29 13:34:13 -04:00

ft8: Fix CRC message length type causing memcpy overflow warning

Change the ft8_crc message length parameter from signed int to uint32_t
since it represents a non-negative FT8 message bit count.

GCC reported a potential buffer overflow in the memcpy() call:
    warning: ‘__builtin_memcpy’ specified bound between
    18446744073709551560 and 18446744073709551564 exceeds maximum object size
    [-Wstringop-overflow=]

The warning was caused by the signed message length allowing negative
values to be converted into a very large unsigned size when calculating
the memcpy() byte count.

Using an unsigned fixed-width type better represents the valid range of
the FT8 message length and prevents invalid negative lengths from being
interpreted as extremely large memory operations.

Signed-off-by: Robin Getz <rgetz503@gmail.com>
This commit is contained in:
Robin Getz
2026-07-26 18:22:04 -04:00
parent 7675cb3e4c
commit d44a953cfa
2 changed files with 5 additions and 3 deletions
+2 -2
View File
@@ -363,7 +363,7 @@ void LDPC::ldpc_decode_log(float codeword[], int iters, int plain[], int *ok)
// check the FT8 CRC-14
//
void LDPC::ft8_crc(int msg1[], int msglen, int out[14])
void LDPC::ft8_crc(int msg1[], uint32_t msglen, int out[14])
{
// the old FT8 polynomial for 12-bit CRC, 0xc06.
// int div[] = { 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0 };
@@ -375,7 +375,7 @@ void LDPC::ft8_crc(int msg1[], int msglen, int out[14])
std::vector<int> msg(msglen + 14);
std::memcpy(msg.data(), msg1, msglen * sizeof(int));
for (int i = 0; i < msglen; i++)
for (uint32_t i = 0; i < msglen; i++)
{
if (msg[i])
{