CAN: read only up to 8 bytes

If HAL implementation writes more than 8 bytes of data, error immediately.
CANMessage defines only 8 bytes of data, lenght cannot be > 8.

This fixes https://github.com/ARMmbed/mbed-os/issues/15361

Signed-off-by: Martin Kojtal <martin.kojtal@arm.com>
pull/15374/head
Martin Kojtal 2023-01-16 15:40:35 +00:00
parent 81f40fc9f4
commit 518eb6d1c3
1 changed files with 4 additions and 0 deletions

View File

@ -19,6 +19,7 @@
#if DEVICE_CAN
#include "platform/mbed_power_mgmt.h"
#include "platform/mbed_error.h"
namespace mbed {
@ -82,6 +83,9 @@ int CAN::read(CANMessage &msg, int handle)
{
lock();
int ret = can_read(&_can, &msg, handle);
if (msg.len > 8) {
MBED_ERROR(MBED_MAKE_ERROR(MBED_MODULE_DRIVER_CAN, MBED_ERROR_CODE_READ_FAILED), "Read tried to write more than 8 bytes");
}
unlock();
return ret;
}