Part Number: MCU-PLUS-SDK-AM263X
Other Parts Discussed in Thread: SYSCONFIG
The function CANFD_isDataSizeValid() contains an implementation error that can lead to out-of-bounds memory access.
int32_t CANFD_isDataSizeValid(uint32_t dataSize)
{
uint32_t canfdDataSize[CANFD_MAX_DLC_MAPPING] =
{0U, 1U, 2U, 3U, 4U, 5U, 6U, 7U, 8U,
12U, 16U, 20U, 24U, 32U, 48U, 64U};
return SystemP_FAILURE;
Below is the correct implementation of the function:
int32_t CANFD_isDataSizeValid(uint32_t dataSize)
{
uint32_t canfdDataSize[CANFD_MAX_DLC_MAPPING] =
{0U, 1U, 2U, 3U, 4U, 5U, 6U, 7U, 8U,
12U, 16U, 20U, 24U, 32U, 48U, 64U};
if((canfdDataSize[0U] == dataSize) ||
(canfdDataSize[1U] == dataSize) ||
(canfdDataSize[2U] == dataSize) ||
(canfdDataSize[3U] == dataSize) ||
(canfdDataSize[4U] == dataSize) ||
(canfdDataSize[5U] == dataSize) ||
(canfdDataSize[6U] == dataSize) ||
(canfdDataSize[7U] == dataSize) ||
(canfdDataSize[8U] == dataSize) ||
(canfdDataSize[9U] == dataSize) ||
(canfdDataSize[10U] == dataSize) ||
(canfdDataSize[11U] == dataSize) ||
(canfdDataSize[12U] == dataSize) ||
(canfdDataSize[13U] == dataSize) ||
(canfdDataSize[14U] == dataSize) ||
(canfdDataSize[15U] == dataSize))
{
return SystemP_SUCCESS;
}
return SystemP_FAILURE;
}

